上传一个包到 npm仓库 1、准备工作
- 拥有 npm 账号
如果没有账号,先注册:www.npmjs.com/signup。 - 准备你的上传的包,在根目录下生成 package.json
npm init -y
这会生成 package.json 文件(描述包的基本信息,如名称、版本、依赖等)。
2、登录npm ,打开终端,运行以下命令登录:
npm login
3. 检查包名是否可用
在发布前,确保你的包名未被占用:
npm view <包名> # 例如:npm view my-awesome-package
# 或直接访问 https://www.npmjs.com/search?q=<包名>
4. 编写代码并测试
确保你的代码没有错误,并通过测试:
npm test # 如果有测试脚本
# 或手动运行你的代码验证功能
5. 发布包
首次发布
npm publish
这会将你的包上传到 npm 仓库。
更新已有包
如果之前已发布过,更新版本后发布:
npm version patch # 小版本更新(如 1.0.1 → 1.0.2)
npm publish
或修改 package.json 中的 version 字段后运行 npm publish。
6. 验证发布结果
发布后,检查 npm 仓库:
- 访问 www.npmjs.com/package/<包名>。
- 确保包信息、依赖和入口文件(如
index.js)正确。
常见问题
权限错误
如果提示 You do not have permission to publish this package:
- 确认你是包的拥有者(或被授权维护者)。
- 如果是团队协作,可通过 npm Teams 添加成员权限。
包名冲突
如果包名已被占用:
- 修改包名为更独特的名称(如添加前缀
@your-username/)。 - 或联系原作者协商转让。
构建失败
如果包含前端资源或需要编译的代码:
- 在
package.json中配置构建脚本(如build: "webpack")。 - 发布时运行
npm run build生成生产代码。
注意事项
-
遵循语义化版本
更新版本号时严格遵循 SemVer 规范。 -
清理缓存
如果遇到网络问题,可尝试清理 npm 缓存:npm cache clean --force -
私有包
如果不想公开发布,可使用npm publish --access restricted限制为私有包。
官方文档
- npm Publish Guide
- npmjs.com 官网
如果有具体问题(如报错信息),可以提供更多细节进一步排查!
遇到的问题
Q1:登录报错:Public registration is not allowed
npm login 以后按enter 调整到浏览器,打开的是cnpm 页面,输入账号密码提示 :
Public registration is not allowed
如下图:
解决方法: 重新设置npm镜像
npm config set registry https://registry.npmjs.org
切换:
npm config set registry https://registry.npmmirror.com
发布完成后,再切换回来,避免npm install报错
Q2:报PUT registry.npmmirror.com/-/user/org.… - [FORBIDDEN] Public registration is not allowed
解决方法同上
Q3:然后 npm login, 报错 Public registration is not allowed
npm ERR! code ENEEDAUTH
npm ERR! need auth This command requires you to be logged in.
npm ERR! need auth You need to authorize this machine using `npm adduser`
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/wliang/.npm/_logs/2023-03-15T07_09_33_625Z-debug.log
解决方法同上,查看镜像源
npm config list