Bun 模块系统
Bun 支持多种模块系统,包括 ES Modules (ESM)、CommonJS (CJS) 和 Bun 专有的模块解析。本章介绍 Bun 的模块系统及其特性。
ES Modules (ESM)
ES Modules 是 JavaScript 的标准模块系统,也是 Bun 推荐使用的方式。
导出模块
导入模块
动态导入
重新导出
CommonJS (CJS)
Bun 完全支持 CommonJS 模块系统,确保与现有 Node.js 生态兼容。
CommonJS 导出
CommonJS 导入
ESM 与 CJS 互操作
在 ESM 中导入 CJS
在 CJS 中导入 ESM
模块解析
解析顺序
Bun 按以下顺序解析模块:
- 内置模块:
bun:*、node:* - 绝对路径:
/path/to/module - 相对路径:
./module、../module - node_modules:向上查找 node_modules
文件扩展名
路径别名
在 tsconfig.json 中配置:
使用别名:
Bun 内置模块
bun 模块
常用 bun:* 模块
Node.js 内置模块
Bun 支持大部分 Node.js 内置模块:
使用 node: 前缀
JSON 和其他文件导入
导入 JSON
导入文本文件
导入 TOML
模块缓存
缓存机制
Bun 会缓存已加载的模块,同一模块只会执行一次:
清除缓存
循环依赖
处理循环依赖
避免循环依赖
package.json 配置
type 字段
exports 字段
条件导出
Bun 会优先使用 bun 条件。
小结
本章介绍了:
- ✅ ES Modules 的导入导出语法
- ✅ CommonJS 模块系统
- ✅ ESM 与 CJS 互操作
- ✅ 模块解析规则和路径别名
- ✅ Bun 和 Node.js 内置模块
- ✅ JSON、TOML 等文件导入
- ✅ 模块缓存和循环依赖处理
下一步
继续阅读 TypeScript 支持 了解 Bun 对 TypeScript 的原生支持。