是否有可能有一个主要的gulpfile.js从其他gulp files.js调用任务?简单"要求"将gulpfile.js作为主要的一个并不起作用。 我有一个平台项目,其中包括几个带有单独gulpfiles的子项目,所以我需要一个解决方案来管理所有子项目中的所有子项目
答案 0 :(得分:30)
可以使用require-dir
模块从一个主gulpfile.js中调用其他gulp files.js中的任务。从项目README中使用它:
如果您的gulpfile.js
开始变得过大,您可以拆分任务
使用require-dir分成单独的文件
模块。
想象一下以下文件结构:
gulpfile.js
tasks/
├── dev.js
├── release.js
└── test.js
安装require-dir
模块:
npm install --save-dev require-dir
将以下行添加到gulpfile.js
文件中。
var requireDir = require('require-dir');
var dir = requireDir('./tasks');
答案 1 :(得分:7)
我创建了一个特殊的gulp-require-tasks模块,可帮助您将gulpfile.js
拆分为单独的较小任务文件。有关示例和文档,请参阅README。
请考虑使用它并告诉我它是否适合您!如果您有任何改进建议或想法,我很乐意接受。
答案 2 :(得分:0)
如果我想让它面向未来并且不想安装怎么办 另一个包。
以下适用于我的 gulp 4,没有任何额外的插件。
在taskfile.js
中:
const { src, dest } = require('gulp');
const mytask = function () {
return src('assets/**/*')
.pipe(dosomething())
.pipe(dest('dest');
}
module.exports = {
mytask
}
在gulpfile.js
中:
const { mytask } = require('taskfile.js');
// use in other tasks
gulp.task('manythings', gulp.series(..., mytask, ...));
// or use directly as 'gulp mytask'
module.exports = {
mytask
}
答案 3 :(得分:-1)
对于不希望包含单独模块或重构的人,我建议使用此答案:
https://stackoverflow.com/a/5809968/40769
var fs = require('fs');
// file is included here:
eval(fs.readFileSync('tools.js')+'');