0

当使用带有 Terser mangle 选项的 webpack 5 时。出于该项目的业务原因,我们必须在生产中启用 mangling。

 optimization: {
            minimize: true,
            minimizer: [
                new TerserPlugin({
                    parallel: true,
                    terserOptions: {
                        toplevel: true,
                        mangle: {
                            properties: {
                                keep_quoted: true,
                                debug: true,
                            },                       
                        },
                    }
                }),
       ]
}

debug:true为了便于举例说明问题,我将保留该选项。

在外部加载 jQuery(想想 Shopify 或我们从窗口上下文访问 jQuery 的其他环境)。

// $ is global, via webpack externs 
this.jTitle = $('title').first();

变成

// $ is global, via webpack externs 
this._$jTitle$_=$("title")._$first$_()

我想让它变成

// $ is global, via webpack externs 
this._$jTitle$_=$("title").first()

这发生在所有代码库中,破坏了包,我无法创建一个正常工作的包。

更新:

举例说明问题的 repo 在这里(分支名称很重要,小心!example-import-problem 是有问题的分支):https ://github.com/vladnicula/terser-for-the-win/tree/示例导入问题

演示问题

4

0 回答 0