Terser不会缩小函数名称

时间:2019-03-22 17:33:21

标签: gulp terser

因此,我在gulp中使用了terser,并尝试了几种组合,但似乎没有什么能使函数名最小化,这是一个示例:

function minify() {
    return gulp.src('js/**/*.js')

        .pipe(gTerser({
            keep_fnames: false,
            mangle: {
                keep_fnames: false,
            }
        }))
        .pipe(gulp.dest(`foo/js/`))
}

更新

此配置还帮助我实现了我想要的:

   .pipe(gTerser({
        keep_fnames: false,
        mangle: {
            properties: {
                keep_quoted: true
            },
            keep_fnames: false,
        }
    }))

1 个答案:

答案 0 :(得分:1)

我已经对您的任务进行了小测试。使用mangle(顶层)选项,可以得到理想的结果。

  

mangle选项toplevel :toplevel(默认为false)-将true传递给在顶层作用域中声明的名称。

const gulp = require('gulp');
const gTerser = require('gulp-terser');

function minify() {
  return gulp.src('./js/**/*.js')
    .pipe(gTerser({
      ecma: 6,
      keep_fnames: false,
      mangle: {
        toplevel: true,
      },
    }))
    .pipe(gulp.dest('./foo/js/'));
}

gulp.task('default', minify)

示例:

const minifyMyFunctionName = (num) => {
  console.log(num * 2);
};

minifyMyFunctionName(2);

Terser结果:

const o=o=>{console.log(2*o)};o(2);