Gulp手表仅检测到第一个变化

问题描述 投票:0回答:1

我正在研究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'));
});
javascript gulp gulp-watch
1个回答
0
投票

这可能是因为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'));
});
© www.soinside.com 2019 - 2024. All rights reserved.