如何按特定顺序 运行 Gulp-任务
How to run Gulp-tasks in the particular order
我正在使用 运行序列插件。但似乎我做错了什么所以它不起作用。我正在尝试使用 运行-sequence gulp 插件创建 browserify build 并将其与服务器上的把手预编译模板连接起来。
在 gulp 文件中对应的任务如下所示:
gulp.task("browserify", function () {
gulp.src('src/js/map.js')
.pipe(browserify({
insertGlobals: false,
debug: false
}))
.pipe(gulp.dest('build'))
.pipe(notify({ message: "browserify ended" }));
});
gulp.task("scripts", function () {
var newDir;
newDir = './build/1111';
gulp.src(['./build/map.js', './build/templates/templates.js'])
.pipe(concat('build.js'))
.pipe(gulp.dest(newDir))
.pipe(notify({ message: "scripts build ended" }));
});
gulp.task('default', function () {
runSequence( 'browserify', 'scripts' );
});
但实际上脚本任务正在尝试在 browserify 任务完成之前调用。所以我得到这个输出:
$ gulp
[10:40:26] Using gulpfile ~/projects/map2/gulpfile.js
[10:40:26] Starting 'default'...
[10:40:26] Starting 'browserify'...
[10:40:26] Finished 'browserify' after 7.84 ms
[10:40:26] Starting 'scripts'...
[10:40:26] Finished 'scripts' after 4.58 ms
[10:40:26] Finished 'default' after 14 ms
[10:40:26] gulp-notify: [Gulp notification] templates build ended
[10:40:26] gulp-notify: [Gulp notification] browserify ended
并且 scripts
任务不创建 build.js 文件(注意通知插件没有消息 "scripts build ended")。
我自己想出来了。为了实现这一点,应该有一些关于完成工作的任务信号。查看此 article 了解更多信息。实际上我选择 return 像这样直播:
gulp.task('browserify', function (cb) {
var stream = gulp.src('src/js/clientAppControl.js')
.pipe(browserify({
insertGlobals: false,
debug: false
}))
.pipe(gulp.dest('build'))
.pipe(notify({ message: 'browserify ended' }));
return stream;
});
依赖项开始正常工作。
与您添加的答案类似,但在我看来更清晰一些,就是删除 return stream
并将 var stream =
替换为 return
。
gulp.task('browserify', function (cb) {
return gulp.src('src/js/clientAppControl.js')
.pipe(browserify({
insertGlobals: false,
debug: false
}))
.pipe(gulp.dest('build'))
.pipe(notify({ message: 'browserify ended' }));
});
我正在使用 运行序列插件。但似乎我做错了什么所以它不起作用。我正在尝试使用 运行-sequence gulp 插件创建 browserify build 并将其与服务器上的把手预编译模板连接起来。
在 gulp 文件中对应的任务如下所示:
gulp.task("browserify", function () {
gulp.src('src/js/map.js')
.pipe(browserify({
insertGlobals: false,
debug: false
}))
.pipe(gulp.dest('build'))
.pipe(notify({ message: "browserify ended" }));
});
gulp.task("scripts", function () {
var newDir;
newDir = './build/1111';
gulp.src(['./build/map.js', './build/templates/templates.js'])
.pipe(concat('build.js'))
.pipe(gulp.dest(newDir))
.pipe(notify({ message: "scripts build ended" }));
});
gulp.task('default', function () {
runSequence( 'browserify', 'scripts' );
});
但实际上脚本任务正在尝试在 browserify 任务完成之前调用。所以我得到这个输出:
$ gulp
[10:40:26] Using gulpfile ~/projects/map2/gulpfile.js
[10:40:26] Starting 'default'...
[10:40:26] Starting 'browserify'...
[10:40:26] Finished 'browserify' after 7.84 ms
[10:40:26] Starting 'scripts'...
[10:40:26] Finished 'scripts' after 4.58 ms
[10:40:26] Finished 'default' after 14 ms
[10:40:26] gulp-notify: [Gulp notification] templates build ended
[10:40:26] gulp-notify: [Gulp notification] browserify ended
并且 scripts
任务不创建 build.js 文件(注意通知插件没有消息 "scripts build ended")。
我自己想出来了。为了实现这一点,应该有一些关于完成工作的任务信号。查看此 article 了解更多信息。实际上我选择 return 像这样直播:
gulp.task('browserify', function (cb) {
var stream = gulp.src('src/js/clientAppControl.js')
.pipe(browserify({
insertGlobals: false,
debug: false
}))
.pipe(gulp.dest('build'))
.pipe(notify({ message: 'browserify ended' }));
return stream;
});
依赖项开始正常工作。
与您添加的答案类似,但在我看来更清晰一些,就是删除 return stream
并将 var stream =
替换为 return
。
gulp.task('browserify', function (cb) {
return gulp.src('src/js/clientAppControl.js')
.pipe(browserify({
insertGlobals: false,
debug: false
}))
.pipe(gulp.dest('build'))
.pipe(notify({ message: 'browserify ended' }));
});