Gulp 复制节点单元模块时,如何省略devdependency?
我只想复制对应用程序很重要的模块-那些位于Gulp 复制节点单元模块时,如何省略devdependency?,gulp,Gulp,我只想复制对应用程序很重要的模块-那些位于package.json中依赖项中的模块。我想省略devdependency下的那些 package.json { "dependencies": { "express": "^4.13.4", "log4js": "^0.6.33" }, "devDependencies": { "gulp": "^3.9.1", "
package.json中依赖项
中的模块。我想省略devdependency
下的那些
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'));
});
是否有任何模块或智能方法来区分哪些模块属于依赖项组,哪些模块属于依赖项组?Node.js允许您要求()
JSON文件,这些文件将作为简单的JavaScript对象返回。您可以使用它仅将出现在package.json
文件中dependencies
下的模块传递给gulp.src()
:
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'));
});
我也有同样的问题…感觉很奇怪这是在大口喝的时候没有考虑的。
我的解决方法是使用child_进程来运行npm安装,并指定一个目录来放置节点_模块目录,其中只包含应用程序所需的软件包
e、 g:
gulp.task('createDeployNodeModulesFolder',函数(cb){
spawn(“'npm'”、['install'、'--prefix'、'./dist/'、'package1'、'package2']、{stdio:'inherit',shell:true},函数(err、stdout、stderr){
控制台日志(stdout);
控制台日志(stderr);
})
.on('关闭',cb);
});
在您的情况下,您只需要生产依赖项,以便可以使用:
npm安装--prefix/deployDir/--only=prod
会有一些警告抱怨没有package.json..等等,但这些只是警告。如果您真的想摆脱它们,我想您可以在运行npm安装之前添加一个任务,将package.json复制或创建到部署目录中。使用distize
npx distize--无文件-o{targetpath}
我预计依赖项会出现问题。如果“dependencies”下的module与“moduleXYZ”有依赖关系,则不会附加它。对,这不考虑可传递的依赖关系。如果您对提取依赖关系感兴趣,您可能需要围绕npm install--production
编写一些解决方案。