Grunt压缩:我怎么能只包含运行时节点模块的依赖关系?

我的应用程序是MEAN堆栈样式。 我想生成一个包含所有Nodejs和AngularJs文件的包,所以我可以解压缩包并在其他环境下运行。

我使用grunt-contrib-compress压缩并生成一个zip文件。 一切正常,但有许多开发节点模块,如grunt *。 我所需要的只是在package.json中定义的运行时节点模块。 这将大大减less封装尺寸。

我可以逐个包含节点模块,但有没有一种好的方法,只包含运行时模块而打包?

好的,我find了一个解决scheme,它加载了package.json并将运行时相关性映射到目标文件夹中。

compress: { main: { options: { archive: 'myapp.zip' }, files: [ {src: ['dist/**','app/**','config/**','server.js'],dest:'.'}, {src: Object.keys(require('./package.json').dependencies).map(function(module){ return "node_modules/" +module+"/**" }),dest:'.'}, ] } } 

我今天的问题完全一样,在提出了一个非常类似的解决scheme之后,我发现了你的问题。 这是我的,类似但略有不同的方法:

 function getDependencies(pkg) { return Object.keys(pkg.dependencies).map(function(val) { return val + '/**'; }); } module.exports = function(grunt) { var pkg = grunt.file.readJSON('package.json'); var config = { pkg: pkg, clean: ["public/"], compress: { validate: { options: { archive: 'public/Lambda.zip' }, files: [ { expand: true, cwd: 'src/', src: ['**'], dest: '/' }, { expand: true, cwd: 'node_modules/', src: getDependencies(pkg), dest: '/node_modules' } ] } } }; grunt.initConfig(config); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-compress'); grunt.registerTask('build', ['clean', 'compress']); }