Babel 转译后为什么每个文件都重复注入 helper 函数?
我用 Babel 转译 React 项目时,发现每个文件里都重复生成了像 _classCallCheck、_createClass 这样的 helper 函数,导致打包体积变大。明明配置了 @babel/plugin-transform-runtime,但好像没生效?
这是我的组件代码:
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
render() {
return <div>{this.state.count}</div>;
}
}
有没有办法让这些 helper 只引入一次,而不是每个文件都塞一份?
你的 .babelrc 或 babel.config.js 配置大概是这样:
注意要把 helpers 设置为 true。另外建议升级到最新版本的 Babel 和相关插件,兼容性会好一些。
有时候问题出在 webpack 或 parcel 这些打包工具的配置上,确保它们能正确解析 node_modules 里的 runtime 代码。
最后提醒下,虽然优化体积是好事,但别为了减少几 KB 而过度折腾,影响了项目维护性反而得不偿失。安全第一,代码结构清晰更重要。
对了,如果你用了 ESLint 记得更新相关规则,避免报错。这几个小改动应该能解决你的问题。