Shims
LECP 提供 shims 功能,实现 ESM 和 CommonJS 模块系统之间的变量兼容性支持,让开发者可以在任意模块系统中使用熟悉的语法。
功能概述
这对以下场景特别有用:
- 渐进式迁移:从 CommonJS 迁移到 ESM 的项目,允许逐步迁移代码
- 多格式输出:使用现代 ESM 语法编写源码,但需要同时输出 ESM 和 CJS 格式以兼容不同的消费环境
- ESM 产物:可以使用 CommonJS 变量
__dirname、__filename、require - CJS 产物:可以使用 ESM 变量
import.meta.url、import.meta.dirname、import.meta.filename
- ESM 产物:可以使用 CommonJS 变量
配置选项
类型: boolean | { legacy?: boolean }
默认值: false
ESM 产物中的 CJS 兼容
在 ESM 产物中,可以直接使用 CJS 的全局变量:
源代码
标准模式 (Node.js 20.11+)
legacy 模式 (Node.js 10.12+)
CJS 产物中的 ESM 兼容
在 CommonJS 产物中,可以使用 ESM 的 import.meta 变量:
源代码
转换结果
配置示例
启用默认 Shims
启用兼容模式
结合其他配置
更多详细配置请参考 配置文档。