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
编写一些解决方案。