如何禁用 类 名称的 webpack 缩小
How to disable webpack minification for classes names
我使用 jasmine
、karma
和 webpack
来测试我的模块。 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'.
})
});
但它 returns 未通过测试。我发现我的 Name
class 被 webpack 解析为捆绑文件中的 t
class 并且 myInstance.constructor.name
等于 "t"
.
我可以阻止 webpack 更改 classes/constructors 的名称吗?
无论何时处于开发模式(您可以在 webpack 配置对象中提及),分别为开发和生产设置构建设置,不要应用缩小插件(可能在您的 webpack 配置中)。
帮助链接:
您可以使用缩小插件提供的 'keep_classnames' 选项来保持 class 名称完整。
安装 Terser 插件以自定义 Webpack optimization
> minimizer
选项 运行:
npm i -D terser-webpack-plugin
...或者在您使用纱线的情况下:
yarn add -D terser-webpack-plugin
然后在webpack.config.js
里面添加这个优化选项:
module.exports = {
mode: ...,
resolve: ...,
target: ...,
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
keep_classnames: true,
},
}),
],
},
};
我使用 jasmine
、karma
和 webpack
来测试我的模块。 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'.
})
});
但它 returns 未通过测试。我发现我的 Name
class 被 webpack 解析为捆绑文件中的 t
class 并且 myInstance.constructor.name
等于 "t"
.
我可以阻止 webpack 更改 classes/constructors 的名称吗?
无论何时处于开发模式(您可以在 webpack 配置对象中提及),分别为开发和生产设置构建设置,不要应用缩小插件(可能在您的 webpack 配置中)。
帮助链接:
您可以使用缩小插件提供的 'keep_classnames' 选项来保持 class 名称完整。
安装 Terser 插件以自定义 Webpack optimization
> minimizer
选项 运行:
npm i -D terser-webpack-plugin
...或者在您使用纱线的情况下:
yarn add -D terser-webpack-plugin
然后在webpack.config.js
里面添加这个优化选项:
module.exports = {
mode: ...,
resolve: ...,
target: ...,
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
keep_classnames: true,
},
}),
],
},
};