2016-11-07 107 views
0

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

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

回答

1

按照documentation你可以使用mangle选项为:

  • mangle(默认true) - 通过false跳过重整名称,或传递一个对象到指定重整选项

对象选项:

  • except - 传递Array应该从mangling中排除的标识符
  • 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;' 

我试图找到一个选项,裂伤的函数名,并跳过重整的争论并没有乐趣,到目前为止(不是说没有...)