npm 发包流程总结
注册npm账号
package.json中指明必要字段
name、version
是必须的,缺失将无法发布main
指向入口文件,一般为commonjs、esm
格式module
指向esm
格式入口文件unpkg
字段- 发布到
npmjs.com
中的包会自动同步到unpkg.com
上 - 通过
unpkg
字段指明unpkg.com
应该如何查找入口文件 - 一般为
umd
格式
- 发布到
repository
1
2
3
4"repository": {
"type": "git",
"url": "git+https://github.com/BryanAdamss/drawing-board.git"
}
检查包名是否重名
- 重名时,将报403错误,提示没有权限提交包(你没有权限修改
别人
的包)403 Forbidden - PUT http://registry.npmjs.org/react-native-app-info - You do not have permission to publish "react-native-app-info". Are you logged in as the correct user?
- npm会使用
package.json
中的name
字段做为包名 https://www.npmjs.com/
中搜索包名,检查是否重名- 有重名,则需要修改包名
- 修改为
scope package
即@scope/package-name
- 这种在
npm publish
时会被自动认定为私有仓库,私有仓库是需要付费的 - 需要在
npm publish
时追加--access public
指明包为公开访问npm publish --access=public
- 注意的是这种形式的包名跟 npm 账户有对应关系,不能随便填写
- 需要在
init
时指明scope
npm init --scope=@user-name
- 需要在
- 这种在
- 直接修改为一个不会重名的包名
- 修改为
- 参考https://github.com/XXHolic/segment/issues/28
检查仓库源
- 国内使用一般都会切到淘宝源(https://registry.npm.taobao.org/)上,在发包时,需要切到npm官方源(https://registry.npmjs.org/)
npm config ls
查看当前源- 若源不正确,需要使用
npm config set registry https://registry.npmjs.org/
切换到官方源
- 若源不正确,需要使用
登录
- 使用
npm login或npm adduser
命令 - 然后输入账号、密码登录
- 登录成功会提示
- `foo@bar.com Logged in as username on http://registry.npmjs.org/.`
- 可通过提示信息,判断源是否真确
发包publish
- 登录后,直接
npm publish
即可- 记得
publish
前要先构建一波
- 记得
使用stand-version做发包版本控制
1 | // package.json |
常见错误
- 无法login
- 源不对
- 403
- 包重名
- 修改包名
- 没有发包权限
- 联系管理员开通权限
- 包版本重复
- 更新发包版本
- 源不对
- 切换源
- 包重名
- 发布成功后,使用淘宝源无法下载最新包
- 淘宝源同步问题
- 等待淘宝源同步后再下载
- 切换到官方源下载
- 淘宝源同步问题
- 参考https://www.jianshu.com/p/5ea8e50d628e
- 403
总结
- 注册账号
- 检查
package.json
必要字段 - 检查重名
- 设置官方源
- 登录
- 发布
- 重设淘宝源
demo
1 |
|