r.js优化器 - 不要破坏函数名称

时间:2014-06-08 00:02:15

标签: javascript requirejs uglifyjs r.js

我正在使用r.js和uglify来缩小和连接我的脚本。我在生产站点上遇到一些错误,其中返回的堆栈跟踪难以理解。我想暂时关闭函数名称的变换(变量名很好),并且我无法解决如何执行此操作,因为r.js包装了传递给uglify.js的配置选项

我的r,js build config中的uglify配置部分看起来像这样

uglify: {
      beautify: true,
      indent_start: 0,
      indent_level: 1,
   }

我想添加

  

-nmf或--no-mangle-functions - 如果你想破坏变量名,而不是触摸函数名。 (from here

如果我添加行

uglify: {
      beautify: true,
      indent_start: 0,
      indent_level: 1,
      '--no-mangle-functions': true
   }

它没有做任何事情,'no-mangle-functions': true也是如此。

如何将此选项传递给uglify?

2 个答案:

答案 0 :(得分:3)

尝试使uglified / mangled代码可读类型首先失败了它的目的。 可能你所追求的是source maps

要在Uglify中生成源地图,只需添加以下选项:

uglify: {
    options: {
        sourceMap: 'build.min.map',
        sourceMappingURL: 'build.min.map'
    }
}

地图文件名必须镜像最终的javascript文件名:

uglified.js <=> uglified.map

答案 1 :(得分:1)

从我在r.js的源代码中可以看到,函数和变量名之间没有直接的区别。但是有一个名为no_functions的选项实际上传递给uglify部分,默认值为false

传递选项:

https://github.com/jrburke/r.js/blob/master/dist/r.js#L25067

no_functions默认为false

https://github.com/jrburke/r.js/blob/master/dist/r.js#L11492

我现在无法测试,所以我只是在猜测。也许你可以尝试这个选项