簡體   English   中英

如何從另一個 gulp file.js 導入所有任務

[英]How to import all tasks from another gulp file.js

是否有可能有一個主 gulpfile.js 從中調用來自其他 gulp files.js 的任務? 將子 gulpfile.js 簡單地“要求”到主文件中是行不通的。 我有一個平台項目,其中包括幾個帶有單獨 gulpfiles 的子項目,所以我需要一個解決方案來管理主項目中的所有子 gulpfiles

可以有一個主 gulpfile.js 從中使用require-dir模塊從其他 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添加到您的gulpfile.js文件中。

var requireDir = require('require-dir');
var dir = requireDir('./tasks');

我創建了一個特殊的gulp-require-tasks模塊,它將幫助您將gulpfile.js拆分為單獨的較小任務文件。 請參閱README示例和文檔。

請考慮使用它,讓我知道它是否適合您! 如果您有任何改進建議或想法,我將很樂意接受。

如果我想讓它面向未來並且不想為它安裝另一個包怎么辦。

以下適用於我的 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
}

我會向不想包含單獨模塊或重構的任何人推薦這個答案:

https://stackoverflow.com/a/5809968/40769

var fs = require('fs');

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM