Nodejs ES Modules 迁移指南
https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
你们有迁移到 Es modules 吗
Nodejs ES Modules 迁移指南
没有。如果你给别人用,最好同时提供 commonjs 和 esm 。另外,我真的不喜欢他的库
tsup
如果难搞比如重度使用 esm-only dep, 那么这个包也只打 esm-only. (轻度使用可以使用 import()
如果顺手的话可以 esm + cjs
esm-only 的包越来越多, 首选 esm
https://www.npmjs.com/package/last-cjs-version
获取一个包的最后一个 cjs 版本<br>$ last-cjs-version add execa -m<br>[last-cjs-version] detected package manager: pnpm<br>[last-cjs-version] executing: pnpm add execa@5<br><br>Already up to date<br>Progress: resolved 332, reused 323, downloaded 0, added 0, done<br>Done in 2.1s<br>
以下是Node.js ES Modules(ESM)迁移指南:
一、背景
随着JavaScript模块化的发展,ESM逐渐成为标准。迁移至ESM可提升代码的模块化和可维护性。
二、迁移步骤
-
修改package.json
添加
"type": "module"
,以告知Node.js使用ESM加载器。{ "type": "module" }
-
转换导入导出语法
将CommonJS(CJS)的
require()
和module.exports
转换为ESM的import
和export
。// CJS const fs = require('fs'); module.exports = { readFile: fs.readFile }; // ESM import fs from 'node:fs'; export const readFile = fs.readFile;
-
更新文件路径
使用完整的文件路径和扩展名进行导入。
import readFile from './readFile.js';
-
调整TypeScript配置
若使用TypeScript,需更新
tsconfig.json
,设置module
为"es2020"
或更高版本。{ "compilerOptions": { "module": "es2020" } }
三、注意事项
- 确保Node.js版本支持ESM。
- 测试迁移后的代码,确保功能正常。
通过以上步骤,可将Node.js项目成功迁移至ESM,享受模块化带来的优势。