如何修复 Webpack 在生产中篡改我的代码

How do I fix Webpack from mangling my code in production?

本文关键字:我的 代码 生产中 何修复 Webpack      更新时间:2023-09-26

我正在使用BitcoinJS构建一个应用程序,发现使用-p标志会导致webpack破坏某些部分,从而破坏生成交易的能力。

建议我在配置中使用带有aliasnoParse,这使问题变得更糟(整个应用程序根本不会加载)。

到目前为止,除了关闭生产(这会在javascript文件中留下各种奇怪的东西,包括我的本地开发路径)之外,我还没有找到任何解决方法。

此处提供的示例项目(包含安装说明以及如何重现):https://github.com/Someguy123/example-webpack-issue

编辑/更新:@bebraw提供了一个有效的解决方案,如果其他人想看到它的实际效果,可以在示例项目的fixed分支上找到它。

问题是 Uglify 默认在您的情况下破坏太多。根据bitcoinjs-lib指令,您需要排除某些名称,如下所示:

plugins: [
    new webpack.optimize.UglifyJsPlugin({
        mangle: {
            except: [
                'Array', 'BigInteger', 'Boolean', 'Buffer',
                'ECPair', 'Function', 'Number', 'Point'
            ]
        }
    })
]

配置插件后,使用 webpack 而不是 webpack -p

它将使生成的捆绑包稍大一些,但它会起作用。

另一种选择是在其他地方为 bitcoinjs-lib 单独生成捆绑包,然后使用它。您还必须考虑那里的重整,但它会使您的项目更整洁。