如何从另一个gulp file.js导入所有任务

net*_*zer 20 javascript node.js gulp

是否有可能有一个主要的gulpfile.js从其他gulp files.js调用任务?简单的"要求"将子gulpfile.js放入主要的一个不起作用.我有一个平台项目,其中包括几个带有单独gulpfiles的子项目,所以我需要一个解决方案来管理所有子项目中的所有子项目

Bri*_*hem 30

有一个主gulpfile.js可以使用该require-dir模块从其他gulp files.js调用任务.从项目README使用它像这样:


跨多个文件拆分任务

如果您gulpfile.js的开始变得过大,可以使用require-dir 模块将任务拆分为单独的文件.

想象一下以下文件结构:

gulpfile.js
tasks/
??? dev.js
??? release.js
??? test.js
Run Code Online (Sandbox Code Playgroud)

安装require-dir模块:

npm install --save-dev require-dir
Run Code Online (Sandbox Code Playgroud)

将以下行添加到您的gulpfile.js文件中.

var requireDir = require('require-dir');
var dir = requireDir('./tasks');
Run Code Online (Sandbox Code Playgroud)


Sla*_* II 7

我创建了一个特殊的gulp-require-tasks模块,可以帮助您将您gulpfile.js分成单独的小任务文件.有关示例和文档,请参阅自述文件.

请考虑使用它,让我知道它是否适合您!如果您有任何改进建议或想法,我很乐意接受.


Jon*_*dén 5

如果我想让它面向未来并且不想为其安装另一个软件包怎么办?

以下内容适用于 gulp 4,无需任何额外的插件。

taskfile.js

const { src, dest } = require('gulp');

const mytask = function () {
  return src('assets/**/*')
    .pipe(dosomething())
    .pipe(dest('dest');
}

module.exports = {
  mytask
}
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)