0

大家好,我希望你们今天过得愉快,我正在尝试找到一种方法来min在同一路径或gulp(gulp-uglify 和 gulp-rename)gulp.dest()上创建文件。在下面的代码中,当我运行 gulp 时,它会继续创建, ,等等,除非我停止终端。我如何让我的 gulp在它丑化的同时只创建一个。我希望每个人都可以帮助我解决这个问题。谢谢你。*.min.js*.min.min.js*.min.min.min.js*.min.js

const gulp = require('gulp');
const browserSync = require('browser-sync').create();
const rename = require('gulp-rename');
const uglify = require('gulp-uglify');

gulp.task('scripts', function() {
    return gulp.src('./src/js/*.js')       
        .pipe(uglify())
        .pipe(rename( {suffix: '.min'} ))
        .pipe(gulp.dest('./src/js/'))
        .pipe(browserSync.stream());
});

gulp.task('browserSync', function(){

    browserSync.init({
        server : {
            baseDir : './'
        }
    });
    gulp.watch('./src/js/**.js', gulp.series('scripts'));
});

gulp.task('default', gulp.series('scripts', 'browserSync'));
4

1 回答 1

1

发生这种情况是因为您的scripts任务是将文件输出到您正在观看的同一目录中:

.pipe(gulp.dest('./src/js/'))

gulp.watch('./src/js/**.js', gulp.series('scripts'));

因此,每次scripts运行并保存到该目录时,它都会watch再次触发您的触发scripts,等等,等等。

因此,要么将你.min的 's 保存到你不观看的目录中,要么不观看.min文件。

顺便说一句,更改为gulp.watch('./src/js/*.js', gulp.series('scripts')); // 删除了一个星号

gulp.watch(['./src/js/*.js', '!./src/js/*.min.js'], gulp.series('scripts')); // 可能会工作 - 但未经测试。

于 2020-02-09T17:36:36.483 回答