包开发与发布
流程:初始化 → 写入口与导出 → 本地联调(link / workspace)→ 测试 → semver → 发布 → 维护。勿将账号密钥写入仓库。
初始化
bash
mkdir my-pkg && cd my-pkg
npm init # 或 npm init -y发布前在 npm 官网确认 name 全局唯一;version 遵循 semver(主.次.修订);补齐 main / module / exports、files 或 .npmignore、repository、license。
典型目录:index.js(或 dist/)、src/、package.json。
本地调试
npm link:在包目录npm link,业务项目里npm link 包名。Vue/React 易出现 双实例,框架常放peerDependencies。- Monorepo workspaces:同仓多包互相引用,减少反复 publish。
版本号
| 级别 | 含义 | 示例命令 |
|---|---|---|
| 修订 | 兼容修复 | npm version patch |
| 次版本 | 兼容新功能 | npm version minor |
| 主版本 | 破坏性变更 | npm version major |
可与 git tag 联动(按团队规范)。
发布
bash
npm login
npm pack # 预览打进包的文件(推荐)
npm publish # scoped:常 npm publish --access public发布前确认 registry 为官方;.env、密钥勿打入包内。撤销 npm unpublish 限制严、伤害下游,优先发 patch 修复。
ESM 与双格式
- 纯 ESM:根目录
"type": "module"+import/export。 - 同时发 CJS + ESM:用
exports区分条件导出;构建可用 Rollup 产出dist/index.cjs与dist/index.esm.js,prepublishOnly里执行npm run build && npm test。
库作者清单
理清入口与 TypeScript 类型;peerDependencies 约束宿主框架;files 控制发包体积;README 写明 Node 版本与用法。
