Nodemon重启运行gulp任务

时间:2014-02-06 09:10:33

标签: javascript node.js gulp

我的gulpfile中有以下代码

gulp.task('scripts', function () {
    gulp.src(paths.browserify)
        .pipe(browserify())
        .pipe(gulp.dest('./build/js'))
        .pipe(refresh(server));
});

gulp.task('lint', function () {
    gulp.src(paths.js)
        .pipe(jshint())
        .pipe(jshint.reporter(stylish));
});

gulp.task('nodemon', function () {
    nodemon({
        script: 'app.js'
    });
});

我需要在Nodemon重启时运行脚本和lint任务。我有以下

gulp.task('nodemon', function () {
    nodemon({
        script: 'app.js'
    }).on('restart', function () {
        gulp.run(['scripts', 'lint']);
    });
});

Gulp.run()现已弃用,那么如何使用gulp和最佳做法实现上述目标?

2 个答案:

答案 0 :(得分:8)

gulp-nodemon文档说明你可以直接执行它,传递一系列任务来执行:

nodemon({script: 'app.js'}).on('restart', ['scripts', 'lint']);

请参阅doc here

UPDATE,因为gulp-nodemon的作者也使用了run:

创意#1,使用功能:

var browserifier = function () {
  gulp.src(paths.browserify)
    .pipe(browserify())
    .pipe(gulp.dest('./build/js'))
    .pipe(refresh(server));
});

gulp.task('scripts', browserifier);

var linter = function () {
  gulp.src(paths.js)
    .pipe(jshint())
    .pipe(jshint.reporter(stylish));
});

gulp.task('lint', linter);

nodemon({script: 'app.js'}).on('restart', function(){
  linter();
  browserifier();
});

答案 1 :(得分:3)

如果可以的话,请使用Mangled Deutz关于使用函数的建议。这是确保现在和未来发挥作用的最佳,最有保证的方法。

但是,如果您需要运行相关任务或一系列任务,则功能无效。我写了run-sequence来解决这个问题。它不依赖gulp.run,而且能够按顺序运行一堆任务。