9

我的 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 和最佳实践来实现上述目标?

4

2 回答 2

9

gulp-nodemon 文档指出您可以直接执行此操作,传递一组任务来执行:

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

在此处查看文档

更新,因为 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();
});
于 2014-02-06T13:41:12.240 回答
3

如果可以,请使用 Mangled Deutz 关于使用函数的建议。这是确保现在和未来都能正常工作的最好、最有保证的方法。

但是,如果您需要运行相关任务或一系列任务,函数将无济于事。我写了运行序列来解决这个问题。它不依赖gulp.run,它能够按顺序运行一堆任务。

于 2014-02-06T15:57:01.633 回答