发布NPM包
一,前言
我们都会经常使用npm来下载别人的模块或者说包,那么我们如何将自己写的模块上传到npm,分享给别人使用呢??
二,发布包
2.1 注册账号
- 进入网址: https://www.npmjs.com 注册一个npm账号。
- 进邮箱验证npm账号(否则发布会报错)
2.2 准备发布的包
1 export { default as base64ToFileOrBlob } from './base64ToFileOrBlob'; 2 export { default as saveFileToBlob } from './saveFileToBlob'; 3 export { default as saveFileToLink } from './saveFileToLink';
2.3 发布包
第一步:登录
第一次输入如下命令:
npm adduser
输入一下命令:
1 npm login
会提示输入用户名密码以及邮箱等,这些都是你在npm注册的账号。
第二步:查看用户
1 npm whoami
检查您的用户名是否已添加到注册表https://npmjs.com/~username
第三步:发布包
在项目根目录下运行如下命令
1 npm publish
如果出现版本号,则代表发布成功。
如果需要发布新版本的话,更新版本号重新发布即可。
2.4 删除包
这里要说一点,取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为;可能会影响正在使用你包的人。
-
首先如果就是想要删除当前的这个版本,执行命令npm unpublish xxx(包名),去官网查看发现已经没有这个包了,如果权限不够加上 --force
- 使用命令npm unpublish xxx@1.1.1(包名@版本名)删除指定版本
- 根据规范,只有在发包的24小时内才允许撤销发布的包( unpublish is only allowed with versions published in the last 24 hours),需要我们发邮件给官方来删除即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,因为这两者构成的唯一标识已经被“占用”了)
- 例如我在撤销包后尝试再发布同一名称+同一版本的包
npm unpublish的推荐替代命令:npm deprecate <pkg>[@<version>] <message>
使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候得到警告
例如:npm deprecate web-downloadfile '这个包我已经不再维护了哟~'
三,遇到的问题
3.1,遇到403
1 ... 2 npm ERR! publish Failed PUT 403 3 npm ERR! code E403 4 npm ERR! no_perms Private mode enable, only admin can publish this module:... 5 ...
解决办法
1,检查仓库是否被设成了淘宝镜像库
1 npm config get registry
https://registry.npm.taobao.org/
2,
如是,则设回原仓库
1 npm config set registry=http://registry.npmjs.org
3,
再次发布
1 npm publish
4. 如发布成功,则再次将仓库地址设为淘宝镜像地址
npm config set registry=https://registry.npm.taobao.org/