防止函数名称在缩小时被破坏

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!')
}