5

可以在不添加 -min 后缀的情况下缩小 js 文件吗?

我想保留原来的名字。

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

2 回答 2

13

这是一个非常古老的问题,但它仍然在 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'));
});
于 2020-02-02T22:04:03.137 回答
1

改为使用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将消除对此类插件的需求,并且在我看来比添加新插件更简单。

于 2015-11-25T18:01:08.150 回答