防止UglifyJS更改函数参数的名称

时间:2016-11-07 03:33:13

标签: javascript meteor uglifyjs

在测试服务器上部署我的应用程序时,我遇到一个错误,其中UglifyJS确实更改了npm依赖模块的函数参数,其中这些参数的名称很重要;一些函数是动态调用的,我使用function-arguments根据相应的名称将某些值映射到某些函数参数。

是否可以告诉UglifyJS跳过某些模块或文件等?

1 个答案:

答案 0 :(得分:1)

根据documentation,您可以使用mangle选项:

  • mangle(默认true) - 传递false以跳过修改名称,或传递对象以指定修改选项

对象选项:

  • except - 传递Array应从美国境内排除的标识符
  • toplevel - 在顶层范围内声明的mangle名称(默认情况下禁用)。
  • eval - 在使用eval或with的范围内可见的mangle名称(默认情况下禁用)。
  • keep_fnames - 默认false。将true传递给不会破坏函数名称。适用于依赖Function.prototype.name。
  • 的代码
//tst.js
var globalVar;
function funcName(firstLongName, anotherLongName)
{
  var myVariable = firstLongName +  anotherLongName;
}

UglifyJS.minify("tst.js").code;
// 'function funcName(a,n){}var globalVar;'

UglifyJS.minify("tst.js", { mangle: { except: ['firstLongName'] } }).code;
// 'function funcName(firstLongName,a){}var globalVar;'

UglifyJS.minify("tst.js", { mangle: { toplevel: true } }).code;
// 'function n(n,a){}var a;'

我试图找到一个选项来破坏函数名称并跳过错误的参数并且到目前为止并没有那么有趣(不是说不存在......)