gulp-缩小而不重命名原始文件

gulp-minify without rename original files

不加-min后缀可以缩小js文件吗?

我想保留原来的名字。

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

改用 gulp-uglify - 它不会重命名文件,这是大多数 gulp 插件的默认行为。

var gulp = require('gulp');
var uglify = require('gulp-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.

完全有可能(现在)做到这一点

如果您在 gulp-minify 选项中将缩小文件的扩展名指定为 .js(或任何您的输入文件扩展名),则缩小文件的文件名将与原来的。问题是 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'));
});