javascript - Gulp watch 仅检测第一个更改

标签 javascript gulp gulp-watch

我正在研究 gulp 并实现 watch 功能。但 gulp watch 仅在第一次检测到更改。

我想编写代码,以便它检测CSS和JS文件的变化,并在开发环境中执行缩小和串联。

我正在使用以下代码:

var gulp = require('gulp');
var concat = require('gulp-concat');
var clean_css = require('gulp-clean-css');
var uglify = require('gulp-uglify');

gulp.task('style', function(){
    gulp.src(['assets/css/style.css', 'assets/css/custom.css'])
        .pipe(concat('build.min.css'))
        .pipe(clean_css())
        .pipe(gulp.dest('assets/build'));
});

gulp.task('script', function(){
    gulp.src(['assets/js/jquery.js', 'assets/js/custom.js'])
        .pipe(concat('build.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('assets/build'));
});

gulp.task('watch', function(){
    gulp.watch('assets/css/*.css', gulp.series('style') );
    gulp.watch('assets/js/*.js', gulp.series('script'));
});

最佳答案

这可能是因为 gulp 第一次不知道任务已经完成,因此当您下次修改文件时,它不会再次重新启动任务。只需在任务中添加 return 语句即可解决此问题:

gulp.task('style', function(){
  return gulp.src(['assets/css/style.css', 'assets/css/custom.css'])
    .pipe(concat('build.min.css'))
    .pipe(clean_css())
    .pipe(gulp.dest('assets/build'));
});

gulp.task('script', function(){
  return gulp.src(['assets/js/jquery.js', 'assets/js/custom.js'])
    .pipe(concat('build.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('assets/build'));
});

关于javascript - Gulp watch 仅检测第一个更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554698/

相关文章:

javascript - 从另一个网站读取Html并分析html树

node.js - 在没有 npm install 的情况下使用 gulp 进行构建

laravel - 在 Vagrant 上监视文件的更改,文件修改时间未更新

node.js - 使用 gulp-file-include 观看 Gulp watch

javascript - 延迟 gulp-watch 执行

javascript - 获取 Node js服务器上特定时区的当前时间

javascript - html 日期时间形式

javascript - 使用 key 的值从 json 字符串获取值

javascript - gulp 任务处理可写文件

node.js - Gulp Watching 在不更改文件的情况下创建无限循环