脚本Concat / Minify任务继续运行

时间:2017-07-12 01:20:59

标签: gulp

所以我有这样的任务:

gulp.task('scripts', function() {
    return gulp.src(['app/scripts/app.js', 'app/scripts/controllers/**/*.js', 'app/scripts/services/**/*.js', 'app/scripts/directives/**/*.js', 'app/scripts/libs/**/*.js' ])
        .pipe(concat('external.min.js'))
        .pipe(ngAnnotate())
        .pipe(uglify())
        .pipe(gulp.dest('app/scripts'))
        .pipe(gulp.dest('dist/scripts'))
});

我有一个观察任务:

gulp.task('watch', ['sass-dev', 'scripts'], function() {
    gulp.watch('app/style/sass/**/*.scss', ['sass-dev']);
    gulp.watch('app/scripts/**/*.js', ['scripts']);
});

一切正常,除非我保存一个JS文件,"脚本"多次运行。我假设问题出在gulp.src上,它看着多个文件,但我不确定。

这对我来说没什么大不了的,但有时我会交换到命令行,任务无限运行。它只是一遍又一遍地被召唤。

如果您还没有猜到,我正在运行Angular,这就是为什么app.js是第一个并且我有ngAnnotate。

有人可以解释为什么脚本有时连续运行吗?

1 个答案:

答案 0 :(得分:1)

我猜问题是.pipe(gulp.dest('app/scripts'))。您正在使用脚本执行某些操作(uglify和angular stuff),然后将它们放在您正在观看的同一文件夹中。因此,scripts任务将一次又一次地启动。

您应该删除此行,并仅将您的分发脚本放在分发文件夹中,并保持您的应用文件不受影响。