Как сделать минимальный файл по тому же пути или месту назначения при gulp-rename и gulp-uglify?

Привет всем, надеюсь, у вас отличный день, я пытаюсь найти способ сделать min файл по тому же пути или gulp.dest() в gulp(gulp-uglify и gulp-rename)< /эм>. В моем коде ниже, когда я запускаю gulp, он продолжает создавать *.min.js , *.min.min.js , *.min.min.min.js и т. д. и т. д., если я не остановлю терминал. Как мне заставить мой глоток создавать только один *.min.js одновременно с uglify. Я надеюсь, что каждый может помочь мне с этим. Благодарю вас.

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'));

person jricc russel    schedule 09.02.2020    source источник


Ответы (1)


Это происходит потому, что ваша задача 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')); // может работать, но не проверено.

person Mark    schedule 09.02.2020
comment
Спасибо, Марк, я просто изменил свой .pipe(gulp.dest('./src/js/')) на .pipe(gulp.dest('./src/js/min/')), чтобы поместить мои мини-файлы по другому пути, в случае gulp.watch(['./src/js/*.js', '!./src/js/*.min.js'], gulp.series('scripts')); он все еще продолжает генерировать *.min.js и т. д., но я все еще с нетерпением жду помещения моего минимального файла в ту же папку. - person jricc russel; 11.02.2020
comment
Привет, Марк, я просто поигрался с моим gulpjs.file, так как вы упомянули эту строку gulp.watch(['./src/js/*.js', '!./src/js/*.min.js'], gulp.series('scripts')), я понял, что добавил ее также к gulp.src всей строке: return gulp.src(['./src/js/*.js', '!./src/js/*.min.js']) , и это работает. Благодарю вас - person jricc russel; 14.02.2020
comment
Кстати, отметьте, что это ! на !./src/js/*.min.js, как это работает? - person jricc russel; 14.02.2020
comment
! — это индикатор отрицания, поэтому эти файлы не включены в ваш список наблюдения. Таким образом, любые .min.js файлы пропускаются. - person Mark; 14.02.2020