gulp-minify 不重命名原始文件

Nin*_*tle 5 javascript gulp gulp-minify

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

我要保留原名。

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

Jan*_*uet 12

这是一个非常古老的问题,但它仍然在 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'));
});
Run Code Online (Sandbox Code Playgroud)

  • 这个答案应该更高,尤其是随着越来越多的人使用 ES6+(这正是我转向 gulp-minify 而不是 uglify 的原因)。这解决了我遇到的问题。谢谢你! (2认同)

nat*_*ung 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"));
});
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用gulp-rename,但切换到uglify将消除对此类插件的需求,并且在我看来比添加新插件更简单。