为什么 gulp-uglify 不修改我的变量名?

Why isn't gulp-uglify mangling my variables names?

我有以下任务:

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

gulp.task('scripts', function () {
  gulp.src('./src/scripts/*.js')
    .pipe(concat('main.js'))
    .pipe(uglify())
    .pipe(gulp.dest('./dist'));
});

以及以下 2 javascript 个文件,test1.js :

var testOneOutput = 'function one';
console.log(testOneOutput);

和test2.js

var testTwoOutput = 'function two';
console.log(testTwoOutput);

并且所有目录都设置正确。虽然当我 运行 任务时,我没有迹象表明丑化工作。虽然串联效果很好。我错过了什么吗?

先执行uglify。然后concat丑化后的文件。

gulp.task('scripts', function () {
  gulp.src('./src/scripts/*.js')
    .pipe(uglify())
    .pipe(concat('main.js'))
    .pipe(gulp.dest('./dist'));
});

在您的脚本中,testOneOutputtestTwoOutput 是全局变量,默认情况下 gulp-uglify 仅破坏局部变量。

将您的代码放入一个函数中,您会看到一些修改。

function go() {
  var testOneOutput = 'function one';
  console.log(testOneOutput);
}

如果您还想破坏顶级函数,您可以提供 {mangle: {toplevel: true}} 选项。

uglify({mangle: {toplevel: true}})