0

我正在开发一个单文件脚本,该脚本旨在通过<script>标签包含在页面中,它是使用 Terser 缩小器使用 Vite.js 构建的。

进行更改后,我注意到每当我调用 Google Analytics 代码时,我的脚本的构建版本都会突然抛出错误。

在进行了一些挖掘之后,我注意到我包含脚本的站点上的其他包之一正在调用一个名为ga(). 发生错误是因为 Terser 正在缩小/修改我的脚本中的函数并命名它ga(),然后与我无法控制的其他函数发生冲突。

认为Terser 可以选择

  • 不修改为特定名称
  • 为所有损坏的函数添加前缀

但它似乎也没有。

我设法通过将以下内容添加到我的配置来解决问题:

    minify: "terser",
    terserOptions: {
      keep_fnames: true,
    },

这阻止了 Terser 修改任何函数名称,但这显然不是很好,因为它浪费了大量的缩小潜力。

有什么方法可以告诉 Terser 仍然破坏所有功能,但这样做的同时还要为其添加前缀a_例如?

4

1 回答 1

0

是的,你可以用正则表达式来做,你可以查看这篇文章或去mangle.properties获取完整的文档。

terserOptions: {
    mangle: {
        properties: {
            regex: /(^P1|^p1|^_p1)[A-Z]\w*/
        }
    }
}
于 2021-10-03T19:42:45.433 回答