Nodemon重新启动运行gulp任务。

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和最佳实践来实现上述功能呢?


2
如果您要对我的问题进行负面评价,请添加评论说明为什么您认为这个问题不相关。 - TYRONEMICHAEL
也许那个点踩的人认为这应该在文档中清楚说明,但实际上,他应该明确表达自己的理由。 - Mangled Deutz
然而,在文档中并不清楚。 - TYRONEMICHAEL
1
一个 gulp-nodemon 包装器,当你开发时重启你的应用,并将你的构建系统限制在一个进程中。请参阅此 gulp-nodemon - vamsikrishnamannem
2
讨厌那些毫无意义的踩票者。给你点赞。 - csvan
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();
});

我看到了 gulp-nodemon 也有这个问题。如果您点击链接,您会发现作者还在使用过时的 gulp.run() 方法吗?我可以通过 nodemon 来完成所有需要的操作,而无需使用 gulp-nodemon。 - TYRONEMICHAEL
随后添加了一个建议,使用常规函数(这个想法是在 gulp 讨论中关于“run”弃用的问题上提出的)。 - Mangled Deutz

3
如果可以的话,请使用Mangled Deutz的建议,使用函数。这是现在和将来确保此操作正常工作的最佳且最可靠的方法。
但是,如果您需要运行依赖任务或一系列任务,则函数无法帮助。我编写了run-sequence来解决这个问题。它不依赖于gulp.run,并且能够按顺序运行一堆任务。

看起来非常有趣,我一定会尝试一下。我一直在寻找一种按顺序运行任务的方法。 - TYRONEMICHAEL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接