【发布时间】:2016-09-18 13:32:23
【问题描述】:
我想导入我的node_modules 全部 不是全部。一个规则会很好,而不是为每个模块编写一个新规则。
通常我的任务是这样的:
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 文件夹中,这样就行不通了。另一方面,如果我抽象出对 gulp 任务的调用(如下面的想法),我想我可能会遇到缺少多个返回值的问题。
我在想这样的事情:
function node_module(module) {
gulp.task('node_module', function () {
return gulp.src(`node_modules/${module}/**/*`)
.pipe(plumber({
handleError: function (err) {
console.log(err);
this.emit('end');
}
}))
.pipe(gulp.dest(`build/node_modules/${module}`))
.pipe(reload({ stream: true }))
})
}
gulp.task('node_modules', function () {
var rv
['event-emitter-es6', 'object-hash', 'urijs'].forEach(m => rv = node_module(m))
return rv
})
【问题讨论】:
-
你应该看看像 webpack 或 browserify 这样的打包工具。维护这将是一场噩梦,并且很容易崩溃(例如,因为
npm dedupe)。 -
@SvenSchoenung - 谢谢,一般来说这可能是正确的。我刚刚在 webpack 中完成了我的第一个项目,我想回到 gulp 看看它是从哪里来的。在这种情况下,我的节点模块都没有依赖项。所以我仍然想要一个答案,即使它只适用于独立模块。
标签: gulp