我想要导入{s>所有 并非{/ 1}}的所有。一条规则很好,而不是为每个模块编写新规则。
通常我的任务看起来像这样:
node_modules
但是因为我只想要对我的项目有用的那些,而不是,例如,对gulp有用,我需要指定它们。但是,如果我指定了多个源,它们将全部组合在gulp.task('node_modules', function () {
return gulp.src('node_modules/**/*')
.pipe(plumber({
handleError: function (err) {
console.log(err);
this.emit('end');
}
}))
.pipe(gulp.dest('build/node_modules'))
.pipe(reload({ stream: true }))
})
文件夹中,因此无法使用。另一方面,如果我将调用抽象为gulp任务(如下面的想法),我想我可能会遇到缺少多个返回值的问题。
我在想这样的事情:
gulp.dest
答案 0 :(得分:1)
如果你真的知道自己在做什么,那就不难了。
您可以简单地将数组传递给包含每个模块的glob的gulp.src()
。然后,您所要做的就是确保所有内容都在目标目录中的正确位置。
您缺少的关键是使用base
option来阻止您的模块在同一目录中被挤压在一起。 (您可以在此问题中详细了解此选项的作用:how base option affects gulp.src & gulp.dest)。
gulp.task('node_modules', function () {
var modules = [ 'event-emitter-es6', 'object-hash', 'urijs' ];
return gulp.src(modules.map(m => `node_modules/${m}/**/*`, {base:'node_modules'})
.pipe(plumber({
handleError: function (err) {
console.log(err);
this.emit('end');
}
}))
.pipe(gulp.dest('build/node_modules'))
.pipe(reload({ stream: true }))
});
此外,如果要复制的模块数组与dependencies
文件中的package.json
相同,您也可以从那里获取列表,而不是手动维护它:
var modules = Object.keys(require('./package.json').dependencies);