用途:帮助把一个 TypeScript 库以正确的 exports map 发布到正确的注册表(npm 或 JSR),面向库作者而非应用部署。资料明确说明应用部署、框架自有构建流水线不在范围内。
主要能力与选型:JSR 仅支持 ESM、直接发布 TS 源码,适合 Deno/Node/Bun 库和文档丰富的 API;npm 支持 ESM 或 ESM/CJS 双格式,发布构建后的 .js 与 .d.ts,覆盖最广、可服务 CommonJS 消费者。经验规则:内部使用或仅面向 Bun/Deno/ESM 消费者时用纯 ESM;要面向仍用 CommonJS 的广泛公开库时用双 ESM/CJS。
关键规则:exports 条件中 types 放最前、default 放最后(按对象顺序匹配);import 对应 ESM、require 对应 CJS,不可以让 require 指向 ESM;每个模块一个 subpath,说明符保持一致,并显式设置 type: module;发布前用 attw(arethetypeswrong)校验:npx @arethetypeswrong/cli --pack;公开版本启用 provenance,从 CI 发布并配置 id-token: write。
工作流要求:任何实现前并行启动 3 个 agent,各一次带名称的 Agent 调用——fuse-ai-pilot:explore-codebase 检查 package.json、构建产物与目标;fuse-ai-pilot:research-expert 通过 Context7/Exa 核对最新 JSR/npm/Node exports 文档;mcp__context7__query-docs 检查条件顺序与 attw 用法。实现后运行 fuse-ai-pilot:sniper 做验证。
快速示例(ESM 纯):package.json 设置 type: module,exports["."] 为 { types: ./dist/index.d.ts, default: ./dist/index.js }。
最佳实践:显式设置 type(即使 CJS 包);每个条件分支都提供 types;从 CI 发布以自动获得 provenance。避免:所有消费者都是 ESM 时还发布 CJS 双格式;把 default 排在 types 之前;习惯性使用 --allow-slow-types(会降低文档与 npm 兼容性)。
参考文档:exports-map.md、jsr-publishing.md、npm-publishing.md、validation.md,以及 package-json-dual、jsr-json、publish-workflow 模板。具体 agent 调用细节与运行环境要求资料中未完整提供。