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

时间:2014-08-27 04:21:16

标签: javascript node.js gulp

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

4 个答案:

答案 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')+'');