Rollup 输出 CJS 和 ESM 双格式需将 output 设为数组,每个对象指定独立 file/dir 和 format;package.json 的 exports 必须精确匹配输出路径与后缀(如 .cjs.js/.mjs),且 sourceMap 需在 tsconfig、rollup.config 和 launch.json 三处一致配置。

Rollup 输出 CJS 和 ESM 双格式,output 必须是数组
Rollup 默认只允许单个 output 对象,但你要同时生成 cjs 和 esm,就得把它写成数组。否则只会输出一种格式,还可能报错 Error: output option must be an object or array。
-
output数组里每个对象必须有独立的file或dir,不能共用路径(比如都写dist/index.js) -
format: 'cjs'对应require()场景,format: 'esm'对应import场景,二者不可互换 - 如果用了
output.dir(如dist/),需配合entryFileNames控制文件名,否则多入口时会冲突
package.json 的 exports 字段要精确匹配 Rollup 输出路径
Node.js 12+ 的 exports 字段不是摆设——它直接决定模块被 import 还是 require 时加载哪个文件。写错就导致“找不到模块”或“SyntaxError: Cannot use import statement outside a module”。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 确保
exports中"./dist/index.js"指向cjs输出,"./dist/index.mjs"或"./dist/index.esm.js"指向esm输出 - ESM 路径必须带
.mjs后缀或在package.json顶层声明"type": "module",否则 Node 会按 CJS 解析 - 不要漏掉
"import"和"require"的显式键,否则某些工具(如 Jest、Vitest)会 fallback 到默认入口,行为不可控
VSCode 调试断点进不了 src/?sourceMap 链路断在三个地方
你改了 src/index.ts,VSCode 却总停在 dist/index.js 里——这不是插件没装对,而是 sourceMap 在 Rollup、TS 编译、VSCode 三端没对齐。
-
tsconfig.json里"sourceMap": true和"outDir"必须启用,且outDir不能和 Rollup 的output.dir冲突(建议 TS 只负责编译不打包,让 Rollup 处理最终输出) -
rollup.config.js中每个output对象都要设sourcemap: true,不能只在顶层写一次 -
launch.json的outFiles必须精确匹配 Rollup 实际生成的 JS 路径,比如你输出dist/index.cjs.js和dist/index.esm.js,就得写两行 glob 或拆成两个 launch 配置
开发时别用 Rollup 直接跑,用 rollup -w + nodemon 更稳
你在 VSCode 终端敲 rollup -c 手动构建,改一次代码就要重跑一次——这对库开发来说太慢。而 rollup -w(watch 模式)本身不支持热替换,且和 VSCode 的自动保存、调试器容易抢资源。
- 推荐组合:
nodemon --watch src --ext ts,js --exec npx rollup -c,它监听源码变化,触发 Rollup 重新打包,比原生 watch 更可靠 - 如果用了 TypeScript,
@rollup/plugin-typescript要配tsconfigOverride: { compilerOptions: { sourceMap: true } },避免 Rollup 读错 TS 配置 - VSCode 的「运行脚本」功能(Ctrl+Shift+P → “Tasks: Run Script”)调用
npm run build:watch比终端手动输更少出错,尤其路径含空格或中文时
output 数组,而是 exports 键值和实际文件后缀对不上、sourceMap 路径在 launch.json 里写成了 **/*.js 却忘了 Rollup 输出的是 .cjs.js 或 .mjs。这些细节不验一遍,打包出来的包在别人项目里大概率跑不起来。

















