【发布时间】:2016-11-07 03:33:12
【问题描述】:
在测试服务器上部署我的应用程序时,我遇到了一个错误,其中 UglifyJS 确实更改了 npm 依赖模块的函数参数,其中这些参数的名称很重要;一些函数是动态调用的,我使用function-arguments 根据它们对应的名称将某些值映射到某些函数参数。
是否可以告诉 UglifyJS 跳过某些模块或文件等?
【问题讨论】:
标签: javascript meteor uglifyjs
在测试服务器上部署我的应用程序时,我遇到了一个错误,其中 UglifyJS 确实更改了 npm 依赖模块的函数参数,其中这些参数的名称很重要;一些函数是动态调用的,我使用function-arguments 根据它们对应的名称将某些值映射到某些函数参数。
是否可以告诉 UglifyJS 跳过某些模块或文件等?
【问题讨论】:
标签: javascript meteor uglifyjs
根据documentation,您可以使用mangle 选项:
mangle(默认 true)— 传递 false 以跳过重整名称,或传递一个对象以指定重整选项对象选项:
except - 传递一个 Array 的标识符,这些标识符应该被排除在修改之外toplevel — 在顶级范围内声明的名称(默认禁用)。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;'
我试图找到一个选项来修改函数名称并跳过修改参数,但到目前为止并不好玩(不是说没有......)
【讨论】: