在我的gulp任务中运行package的gulp任务

时间:2016-10-30 23:23:02

标签: gulp node-modules

有没有办法从我的gulp任务中运行package gulp任务?这是我的文件结构:

Root
|
|-- Gulpfile.js (task: get-files)
|
|-- node_modules
     |
     |-- packageA
          |
          |-- gulpfile.js (task: compile-custom)

我想在我自己的gulpfile中的compile-custom任务中运行来自packageA的{​​{1}}任务。理想情况下,我还可以从get-files任务获得回调,以了解它何时完成。

1 个答案:

答案 0 :(得分:1)

我建议不要根据需要从另一个gulpfile运行任务,尤其是从node_modules包中。不想这样做的原因是由于包可以更改/更新然后因此而破坏您的代码。

最好你只需将你想要的gulpfile任务复制到你的gulpfile中并将其合并到你的项目中,或者只是创建一个新的文件,你可以很容易地区分它与你的gulpfile是分开的,只需要它就可以调用它。你自己的gulfile就像你任何其他包和/或JS函数一样。使用其中任何一个选项时,请不要忘记将依赖项安装到package.json文件中,然后运行npm install

注意:要在gulp任务中运行gulp任务,您可以使用

gulp.start('taskname')

尽管只有在完全必要时才应使用以下内容。此外,将在较新版本的Gulp v4(refer to this)中弃用。调用任务的方法是通过创建上面提到的函数并在gulpfile中调用该函数。

gulp函数调用示例:

 var someFile = require('./someFile.js'); 

 gulp.task('my-custom-task', function () {
   someFile.doSomething('foo', 'bar');
 });

如果你的函数异步执行某些操作,它应该在最后调用一个回调,所以gulp能够知道它何时完成:

 var someFile = require('./someFile.js'); 

 gulp.task('my-custom-task', function (callback) {
   someFile.doSomething('foo', 'bar', callback);
 });