如何修复 Webpack 在生产环境中破坏我的代码?

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

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

有人建议我在配置中使用 noParsealias,这使问题变得更糟(整个应用程序根本无法加载)。

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

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

EDIT/UPDATE:@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 单独生成包,然后使用它。您还必须考虑其中的修改,但这会使您的项目更整洁。