我正在使用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?
答案 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
我现在无法测试,所以我只是在猜测。也许你可以尝试这个选项