![](/img/trans.png)
[英]How to start gulp task from other gulp task after gulp.start is deprecated in gulp V4?
[英]How to run a gulp task from Node.js - Any better alternative to gulp.start()?
我想知道从节点应用程序运行gulp任务的正确方法是什么。
目前我正在使用以下代码,但我想知道是否:
我读到gulp.start()
它并不是真正意图作为公共API,如果它是真的,有什么选择?
require('./gulpfile.js');
gulp.start('release', function () {
// do smt
});
确实, gulp.start()
不是Offical Gulp API的一部分 。 这是因为gulp任务实际上不应该从其他应用程序执行,而是命令行。
然而,Gulp本身从另一个名为Orchestrator的项目继承了其大部分任务运行能力,包括start()
函数。
(当我说它'继承'它们时,我的字面意思是'继承' .Gulp实际上不仅仅是Orchestrator + Node.js Streams + Vinyl文件 +一些胶水+ 很多插件 。)
现在Orchestrator的本身是非常应该是从一个普通的Node.js应用程序中执行。 这意味着没有好的技术理由不使用gulp.start()
函数。
由于gulp.start()
只是从orchestrator.start()
继承,因此所有的附带文档都适用。 该文档可以解答有关在任务执行期间检测到成功终止和错误的问题:
gulp.start('release', function (err) {
if (err) {
// an error occured
} else {
// success
}
});
但有一点需要注意:由于gulp.start()
不是官方API的一部分,因此可能会发生变化。 这种变化已经出现。 从版本4.0开始,Gulp将不再继承Orchestrator,而是从Undertaker继承。 这意味着gulp.start()
将被取消并由gulp.series()
和gulp.parallel()
取代:
gulp.series('release')(function(err) {
if (err) {
// an error occured
} else {
// success
}
});
Gulp会自动在你的gulpfile中查找你的默认任务,如果它在那里就运行它; 你不必使用gulp.start()。
gulp.task('default', ['dependencyTask1name', ..., 'dependencyTaskXname'], function () {
// Do stuff, produce output, what-have-you. I usually just place a console.log statement here with distinctive output, as well as inside every other task.
});
Gulp会在每个任务的开始和结束时通知终端。
[01:27:54] Starting 'default'...
[01:27:54] Finished 'default' after 51 μs
如果Gulp由于错误而无法完成任务,它也会将该错误输出到终端。 示例任务:
gulp.task('routerStuff', function() {
console.log('routes compiling.');
return gulp.src('./source/index.js')
.pipe(babel())s
.pipe(gulp.dest('./routes/'));
});
终端输出:
$ gulp
/Users/EMC3/Documents/node-wordpress/gulpfile.js:35
.pipe(babel())s
^
SyntaxError: Unexpected identifier
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.