gulp-minify без переименования оригинальных файлов

Можно ли минимизировать JS-файлы без добавления суффикса -min?

Я хочу сохранить оригинальное имя.

gulp.task("js-external-release", function() {
    gulp.src(config.vendorJs)
        .pipe(minify())
        .pipe(gulp.dest(config.dist + "/scripts"));
});

1 ответ

Решение

Использование gulp-uglify вместо этого - он не переименовывает файлы, что является поведением по умолчанию для большинства плагинов gulp.

var gulp = require('gulp');
var uglify = require('uglify');

gulp.task("js-external-release", function() {
    gulp.src(config.vendorJs)
        .pipe(uglify())
        .pipe(gulp.dest(config.dist + "/scripts"));
});

В качестве альтернативы, вы можете использовать gulp-rename, но переключается на uglify устранит необходимость в таком плагине и будет менее сложным, чем добавление нового плагина на мой взгляд.

Это очень старый вопрос, но он все еще довольно часто всплывает в Google, и поскольку Uglify больше не поддерживается активно для ES6+ и gulp-minify есть, я подумал, что добавлю, что (сейчас) вполне возможно сделать это с помощью gulp-minify.

Если вы укажете расширение минифицированных файлов просто .js (или любое другое расширение вашего входного файла) в вашем gulp-minifyпараметры, минифицированный файл будет иметь то же имя, что и исходный. Проблема в том, чтоgulp-minifyпо умолчанию также компилирует неминифицированную копию входного файла в выходной каталог - и эта неминифицированная копия добавляется после минифицированной копии, тем самым перезаписывая ее и оставляя вам только копию оригинала.

Чтобы обойти это, установите noSource значение true - тогда копия входного файла не выводится:

gulp.task("js-external-release", function() {
    gulp.src(config.vendorJs)
    .pipe(minify({
        ext: {
            min: '.js' // Set the file extension for minified files to just .js
        },
        noSource: true // Don’t output a copy of the source file
    }))
    .pipe(gulp.dest(config.dist + '/scripts'));
});
Другие вопросы по тегам