r.js构建中的备用JavaScript压缩方法

时间:2014-04-23 21:27:26

标签: javascript optimization requirejs whitespace r.js

我正在使用r.js为我的Require JS应用程序构建一个生产脚本,我正在寻找一种方法来使用备用压缩库或更改使用的默认值。我希望删除空格,但变量名保持不变。

我特别要求保留变量名称,而不是更改它们。对常量变量名称的需求引入了一些“代码味道”,但它使应用程序的配置文件对非专业编辑器更加健壮 - 所以请尽量避免在此处建议设计更改。

我目前将r.js配置为根本不优化JavaScript,这意味着不仅保留了变量名,还保留了空格。 gruntfile.js中的相关部分如下所示。

有人可以建议一种方法来压缩空格,但不能在r.js构建中更改变量名吗?

  english: {
    options: {
      baseUrl: "js",
      mainConfigFile: "js/app-en.js",
      name: "app-en",
      out: "js/dist/<%= pkg.name %>-en.js",
      optimize: "none"
    }
  }

1 个答案:

答案 0 :(得分:0)

r.js优化器具有可用于控制缩小器操作方式的设置。使用的默认minifier是UglifyJS。 uglifyjs选项告诉r.js如何调用它。根据您已显示的设置,删除optimize: "none"并添加uglify: { no_mangle: true }是所需的:

english: {
  options: {
    baseUrl: "js",
    mainConfigFile: "js/app-en.js",
    name: "app-en",
    out: "js/dist/<%= pkg.name %>-en.js",
    uglify: {
      no_mangle: true
    },
  }
}

UglifyJS采用的整套设置记录在案here。如果您需要或想要切换到UglifyJS2Closurer.js可以使用uglify2closure设置来设置其选项。

对于Uglify2,防止重整的设置为:

uglify2: {
  mangle: false
}

关闭,我相信你想要:

closure: {
  CompilationLevel: 'WHITESPACE_ONLY',
},