javascript - 如何在 gulp-rename 和 gulp-uglify 上的相同路径或目标中创建 min 文件?

标签 javascript gulp browser-sync gulp-uglify gulp-rename

大家好,希望您度过愉快的一天,我正在尝试找到一种方法来在同一路径或 gulp.dest()< 中创建 min 文件 gulp(gulp-uglify 和 gulp-rename)。在下面的代码中,当我运行 gulp 时,它会继续创建 *.min.js*.min.min.js*.min.min 。 min.js 等等,除非我停止终端。如何让我的 gulp 在 uglify 的同时只创建一个 *.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'));// 可能有效 - 但未经测试。

关于javascript - 如何在 gulp-rename 和 gulp-uglify 上的相同路径或目标中创建 min 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60136784/

相关文章:

javascript - 如何在 vue js 中重用 es6 类?

javascript - 在提交时将选中的复选框的值保存在数组中 Ionic

javascript - 带通配符的 Gulp SASS watch 命令目标路径

javascript - 调试时源映射是否有效?

node.js - 没有 gulp 的 Express 和 BrowserSync?

javascript - 有效字段更改后,Formik 调度 Redux 操作

javascript - 如何将图像放置在每个单独的网格正方形中?

node.js - Angular2 BrowserSync 双向 SSL

node.js - 如何在 TypeScript 中使用 gulp-load-plugins?

javascript - 2017 年 HTML/CSS 的实时重新加载/刷新解决方案