我有一个grunt-contrib-uglify的grunt配置:
options: {
mangle: {
topLevel: true
},
compressor: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true
},
dist: {
cwd: 'public',
expand: true,
src: ['**/*.js'],
dest: 'public'
}
}
以下是我所拥有的一些示例代码:
(function (Core, $, undefined) {
Core.Dom = {
AddItem: function() {
... code ...
}
};
... etc ...
}(window.Core = window.Core || {}, jQuery));
在我运行我的grunt任务之后,压缩工作就像摆脱空白等一样,但代码仍然有函数标签及其名称。例如,在压缩文件中Core.Dom.AddItem
将是a.Dom.AddItem
。有没有办法将名称变为a.b.c
b=Dom
和c=AddItem
的位置?我也尝试了mangle: true
,但它保留了函数的名称。任何人都知道我做错了什么?
答案 0 :(得分:3)
想象一下在另一个文件中:
window.Core.Dom.AddItem()
如果uglify在Core.Dom
中重命名为a.b
,则其他文件将失败,因为window.Core.Dom
现在是window.Core.b
。
Uglify重命名重命名的安全内容。
将Core
重命名为a
的原因是,在此上下文中,它可以安全地重命名函数内所有出现的Core
,而无需担心其在...之外的使用功能
另外,请参阅闭包的概念。