【问题标题】:Run package's gulp task within my gulp task在我的 gulp 任务中运行包的 gulp 任务
【发布时间】: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 任务中获得回调,以了解它何时完成。

【问题讨论】:

    标签: gulp node-modules


    【解决方案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,它将文件输出到packageAdist 目录。从那里,我抓取该文件并将其放在我的项目的 js 目录中,因此需要同步调用。
    • 如果您想同步调用并且需要知道最后一个任务何时完成,我建议您查看Run-Sequence Module。您只需按您想要的顺序放置事物,它们将按顺序运行,一旦您完成一项任务,您将继续执行下一项任务。在你的情况下,这似乎是你想要的。
    • 谢谢!我会尝试结合使用此解决方案并回复您。
    猜你喜欢
    • 1970-01-01
    • 2016-02-12
    • 2015-01-31
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多