【问题标题】:How to run Gulp-tasks in the particular order如何按特定顺序运行 Gulp 任务
【发布时间】:2015-03-13 04:44:04
【问题描述】:

我正在使用运行序列插件。但似乎我做错了什么,所以它不起作用。我正在尝试使用 run-sequence gulp 插件在服务器上创建 browserify 构建并将其与我的车把预编译模板连接。

在 gulpfile 中对应的任务如下所示:

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 文件(注意没有来自通知插件的消息“脚本构建结束”)。

【问题讨论】:

    标签: javascript node.js build gulp browserify


    【解决方案1】:

    我自己想通了。为了实现这一点,应该有一些关于完成工作的任务信号。检查此article 了解更多信息。实际上我选择这样返回流:

    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;
    });
    

    并且依赖项开始正常工作。

    【讨论】:

      【解决方案2】:

      与您添加的答案类似,但我认为更简洁的是删除 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' }));
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-15
        • 2015-06-01
        • 2012-05-06
        • 1970-01-01
        • 2014-12-14
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多