在我的 gulp 任务中运行包的 gulp 任务
Posted
技术标签:
【中文标题】在我的 gulp 任务中运行包的 gulp 任务【英文标题】:Run package's gulp task within my gulp task 【发布时间】:2017-03-13 02:19:32 【问题描述】:有没有办法从我的 gulp 任务中运行包 gulp 任务?这是我的文件结构:
Root
|
|-- Gulpfile.js (task: get-files)
|
|-- node_modules
|
|-- packageA
|
|-- gulpfile.js (task: compile-custom)
我想在我自己的 gulpfile 中的 get-files
任务中从 packageA
运行 compile-custom
任务。理想情况下,我还可以从compile-custom
任务中获得回调,以了解它何时完成。
【问题讨论】:
【参考方案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);
);
【讨论】:
我能理解这种担忧。为了简单起见,我的目标是把它变成一个单一的 gulp 任务。我的计划是运行packageA
,它将文件输出到packageA
的dist
目录。从那里,我抓取该文件并将其放在我的项目的 js
目录中,因此需要同步调用。
如果您想同步调用并且需要知道最后一个任务何时完成,我建议您查看Run-Sequence Module。您只需按您想要的顺序放置事物,它们将按顺序运行,一旦您完成一项任务,您将继续执行下一项任务。在你的情况下,这似乎是你想要的。
谢谢!我会尝试结合使用此解决方案并回复您。以上是关于在我的 gulp 任务中运行包的 gulp 任务的主要内容,如果未能解决你的问题,请参考以下文章