防止函数名称在缩小时被破坏
Prevent function name to get mangled while minification
我正在使用 gulp-uglify ~1.5.4 进行我的 javascript 缩小,在一个文件中有这样的代码:columns[j].colDef.cellRenderer.name === 'dateRenderer'
,cellRenderer
是一个函数,所以 cellRenderer.name
将 return 该函数的名称。
所以当函数是 dateRenderer()
时,代码应该 return true
这不会发生,因为在缩小之后函数被破坏了。
我找到了这个帖子: 但我不想告诉 uglify 哪些变量需要处理,哪些变量不需要,难道没有其他方法可以解决这个问题吗?就像在 AngularJS 中一样,我们正在使用 $inject 服务。
如果您不想指定 uglifyjs 应该从 mangling 中跳过哪些函数名称,将该函数的名称存储为字符串。
function dateRenderer() {
// do something useful
}
dateRenderer.rendererName = 'dateRenderer'
// later ...
var fn = dateRenderer
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}
...或在调用该特定函数后设置其名称:
function dateRenderer() {
dateRenderer.rendererName = 'dateRenderer'
// do something useful
}
// later ...
var fn = dateRenderer
// do something
dateRenderer()
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}
我正在使用 gulp-uglify ~1.5.4 进行我的 javascript 缩小,在一个文件中有这样的代码:columns[j].colDef.cellRenderer.name === 'dateRenderer'
,cellRenderer
是一个函数,所以 cellRenderer.name
将 return 该函数的名称。
所以当函数是 dateRenderer()
时,代码应该 return true
这不会发生,因为在缩小之后函数被破坏了。
我找到了这个帖子:
如果您不想指定 uglifyjs 应该从 mangling 中跳过哪些函数名称,将该函数的名称存储为字符串。
function dateRenderer() {
// do something useful
}
dateRenderer.rendererName = 'dateRenderer'
// later ...
var fn = dateRenderer
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}
...或在调用该特定函数后设置其名称:
function dateRenderer() {
dateRenderer.rendererName = 'dateRenderer'
// do something useful
}
// later ...
var fn = dateRenderer
// do something
dateRenderer()
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}