我只想复制对应用程序很重要的模块 - 位于dependencies
package.json
内的模块。我想省略devDependencies
下的内容。
package.json
{
"dependencies": {
"express": "^4.13.4",
"log4js": "^0.6.33"
},
"devDependencies": {
"gulp": "^3.9.1",
"gulp-rename": "^1.2.2",
"gulp-typescript": "^2.12.1",
"typings": "^0.7.9",
"yargs": "^4.3.2"
}
}
gulpfile.js
gulp.task('copy_packages', function() {
gulp
.src('node_modules/**/*.*')
.pipe(gulp.dest('../release/node_modules'));
});
是否有任何模块或智能方法可以区分哪些模块属于dependencies
组,哪些模块属于devDependencies
?
答案 0 :(得分:0)
Node.js允许您将require()
JSON文件作为简单的JavaScript对象返回。您可以使用它仅将这些模块传递到gulp.src()
文件中dependencies
下显示的package.json
:
var gulp = require('gulp');
var packageJson = require('./package.json');
gulp.task('copy_packages', function() {
var modules = Object.keys(packageJson.dependencies);
var moduleFiles = modules.map(function(module) {
return 'node_modules/' + module + '/**/*.*';
});
return gulp.src(moduleFiles, { base: 'node_modules' })
.pipe(gulp.dest('../release/node_modules'));
});
答案 1 :(得分:0)
也有同样的问题...感到奇怪,这是在创建gulp时未考虑的。 我的解决方法是使用child_process运行npm install并指定一个目录,以将node_modules目录仅包含应用程序所需的软件包。
例如:
gulp.task('createDeployNodeModulesFolder', function(cb) {
spawn('"npm"', ['install', '--prefix', './dist/', 'package1', 'package2'], {stdio: 'inherit', shell: true}, function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
})
.on('close', cb);
});
在您的情况下,您只需要生产依赖项,因此可以使用: npm install --prefix / deployDir / --only = prod
会有一些警告抱怨没有package.json..etc。,但这些仅仅是警告。如果您真的想摆脱它们,我想您可以在运行npm install之前添加一个任务,以将package.json复制或创建到deploy目录中。
答案 2 :(得分:0)
使用distize https://www.npmjs.com/distize。
comp