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

kq0g1dla  于 2022-12-08  发布在  Gulp
关注(0)|答案(4)|浏览(139)

是否可以有一个主gulpfile.js,从它调用其他gulp文件.js中的任务?简单地将子gulpfile.js“require”到主gulpfile.js中是行不通的。我有一个平台项目,其中包括几个具有单独gulpfiles的子项目,所以我需要一个解决方案来管理主gulpfiles中的所有子gulpfiles

e4eetjau

e4eetjau1#

可以有一个主gulpfile.js,从它调用其他gulp files.js中的任务,使用require-dir模块。在项目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');
uurity8g

uurity8g2#

我已经创建了一个特殊的gulp-require-tasks模块,它可以帮助你将gulpfile.js拆分成单独的小任务文件。请参阅README的示例和文档。
请考虑使用它,并让我知道它是否适合你!如果你有任何改进的建议或想法,我将欣然接受。

2g32fytz

2g32fytz3#

如果我想让它经得起未来的考验,而不想为它安装另一个软件包,该怎么办?
以下代码适用于我的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
}
qojgxg4l

qojgxg4l4#

对于那些不想包含单独模块或重构的人,我推荐以下答案:
https://stackoverflow.com/a/5809968/40769

var fs = require('fs');

// file is included here:
eval(fs.readFileSync('tools.js')+'');

相关问题