我會建議不要根據需要從另一個gulpfile運行任務,特別是從node_modules包中運行。不想這樣做的原因是因爲軟件包可以更改/更新,然後因爲它而中斷代碼。
最好你應該只是將你想要的gulpfile任務複製到你的gulpfile並將它合併到你的項目中,或者只是創建一個新的文件,在這裏你可以很容易地區分它是與你的gulp文件分開的東西,在你自己的環境中,就像你使用其他軟件包和/或JS功能一樣。使用其中任何一個選項都不要忘記將依賴關係安裝到您的package.json
文件中,然後運行npm install
。
注:要一飲而盡任務中運行一飲而盡任務中,你可以使用
gulp.start('taskname')
雖然下面應該只有在完全必要使用。另外將在新版本的Gulp v4(refer to this)中棄用。調用任務的方法是通過創建一個如上所述的函數並在您的gulp文件中調用該函數。吞函數調用的
例子:
var someFile = require('./someFile.js');
gulp.task('my-custom-task', function() {
someFile.doSomething('foo', 'bar');
});
如果你的函數做一些事情異步,它應該調用在最後一個回調,所以一飲而盡能夠知道什麼時候它的完成:
var someFile = require('./someFile.js');
gulp.task('my-custom-task', function (callback) {
someFile.doSomething('foo', 'bar', callback);
});
我可以理解這個問題。爲了簡單起見,我的目標是讓這個任務成爲單一的任務。我的計劃是運行'packageA',它將一個文件輸出到'packageA''' dist'目錄。從那裏,我抓住該文件並將其放在我的項目的'js'目錄中,因此需要同步調用。 –
如果你想同步呼叫,並且你需要知道最後一個任務完成的時間,我建議你查看[Run-Sequence Module](https://www.npmjs.com/package/run-sequence)。你只需按照你想要的順序放置東西,然後它們將按順序運行,一旦你完成一個任務,你就可以進入下一個任務。你的情況似乎是你想要的。 – CriCri
謝謝!我會試試這個解決方案的一些組合,然後回覆你。 –