如何禁用类名称的webpack缩小

vs91vp4v  于 2023-08-06  发布在  Webpack
关注(0)|答案(2)|浏览(103)

我使用jasminekarmawebpack来测试我的模块。webpack在启动测试之前预处理我的测试文件。
在我的测试中,我有class Name{...}要测试。我创建了一个新的Name示例,然后在我的测试中,我创建了一个expect(myInstance.constructor.name).toBe("Name")示例。

class Name{}

const myInstance = new Name();

describe("The object",function(){
  it("should be the instance of Name class",function(){
    expect(myInstance.constructor.name).toBe("Name");  // Expected 't' to be 'Name'.
  })
});

字符串
但它返回失败的测试。我发现我的Name类被webpack解析为捆绑文件中的t类,myInstance.constructor.name等于"t"
我可以阻止webpack更改类/构造函数的名称吗?

6g8kf2rb

6g8kf2rb1#

安装Terser插件以自定义Webpack optimization > minimizer选项运行:

npm i -D terser-webpack-plugin

字符串
或者在使用yarn的情况下:

yarn add -D terser-webpack-plugin


然后在webpack.config.js中添加此优化选项:

module.exports = {
  mode: ...,
  resolve: ...,
  target: ...,
  optimization: {
    minimizer: [
      new TerserPlugin({
        terserOptions: {
          keep_classnames: true,
        },
      }),
    ],
  },
};

svmlkihl

svmlkihl2#

分别为开发和生产进行构建设置,无论何时处于开发模式(您可以在webpack配置对象中提及),不要应用缩小插件(可能在您的webpack配置中)。
帮助链接:

  1. Bundling Modes
  2. Minification plugin Webpack v4
  3. Minification plugin Webpack v5
    您可以使用缩小插件提供的'keep_classnames'选项来保持类名不变。

相关问题