Q: Babel 配置中的 sourceType: 'unambiguous' 是什么意思?有什么用?
Babel 可以处理两种类型的 JS 代码:Script (脚本) 和 Module (模块)。它通过 sourceType 选项来决定如何解析代码。
'use strict'。这是针对 CommonJS 和 ESM 混合使用的场景 最安全的配置。 Babel 会先扫描整个文件:
import 或 export 语句,就当作 Module 处理。场景:
如果不设置 unambiguous,Babel 可能会把一些本来不是 ESM 的 CommonJS 文件 (甚至是一些纯脚本) 误判为 ESM,在顶部强制加上 'use strict',导致一些使用了非严格模式语法的第三方库 (如 outdated libs) 报错。
因为 Webpack 本身就是个 Module Bundler,它默认所有被 import 进来的文件都应该是模块。如果某个文件不想被当做模块处理,应该在 module.rules 里显式排除 (Exclude)。