treeShaking 配置如何影响 Babel 的模块处理
treeshaking 本身是打包工具(如 webpack)的功能,babel 负责将 es module 语法转换为 commonjs。为了让打包工具能正确执行摇树优化,必须通过 @babel/plugin-transform-modules-commonjs 插件禁用 babel 对模块语法的转换,保留原始的 import/export 结构。

启用 false 后的代码输出与依赖关系
当配置 modules: false 时,Babel 不会生成 require() 调用,而是直接输出 import 和 export 语句。这种输出保留了模块间的静态引用关系,使得分析工具能够识别哪些导出未被使用。

const babel = require('@babel/core');
const code = `
import { unused } from './utils';
export const main = () => console.log('ok');
`;
const result = babel.transformSync(code, {
plugins: [
['@babel/plugin-transform-modules-commonjs', { modules: false }]
]
});
console.log(result.code); // 输出包含 import 和 export 的代码
未配置时的默认行为与冲突
如果不显式配置 modules 选项,Babel 默认会将其转换为 CommonJS 格式。这会导致模块依赖变成动态的运行时调用,破坏静态分析所需的结构,从而使得 Tree Shaking 失效。

const result = babel.transformSync(code, {
plugins: [
'@babel/plugin-transform-modules-commonjs'
]
});
console.log(result.code); // 输出包含 require() 的代码
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











