如何在 gulp-rename 和 gulp-uglify 上以相同路径或目标创建一个 min 文件?

How do I make a min file in the same path or dest on gulp-rename and gulp-uglify?

大家好我希望你今天过得愉快,我正在尝试找到一种方法,如何在同一路径中制作 min 文件或在 [=22= 上制作 gulp.dest() ]gulp(gulp-丑化和gulp-重命名)。在我下面的代码中,当我 运行 我的 gulp 它继续创建 *.min.js*.min.min.js*.min.min.min.js 等等,除非我停止终端。如何让我的 gulp 在丑化的同时只创建一个 *.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'));

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

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

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

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

所以要么将您的 .min 保存到您不看的目录中,要么不看 .min 文件。

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

gulp.watch(['./src/js/*.js', '!./src/js/*.min.js'], gulp.series('scripts')); // 可能有效 - 虽然未经测试。