「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。
npm发布及常见问题
记一次最近发布npm包的基本流程及遇到的问题。
注册
1、在npm官网注册
https:www.npmjs.com/
2、在命令行中注册
npm adduser // 按提示输入Username、Password、Email完成注册
登录
tip:在官网上登录时,用户名一定不要使用邮箱登录,
npm login // 按提示输入Username、Password、Email完成注册
初始化npm项目
npm init // 依次填入项目名称、版本、描述、关键词、github地址等等
测试npm包
本地测试
在npm项目中 与package.json 同级目录下:
npm link 将npm包创建一个symlink链接到全局文件中
在用来测试的项目中:
// 将改包引入项目中,可以在项目中直接引入并测试了
// 作用类似npm install, 但这里引入的是本地的
npm link <你的包名>
在npm项目中修改代码,在测试项目中是可以看到npm项目的实时更新的 用完后可以删除本地的引用
npm unlink <你的包名> // 作用类似npm uninstall,
引自:本地包调试
线上测试
修改测试版本中的package.json
"version": "0.0.1-beta",
npm publish --tag=beta // 发布测试版
npm install @fz/components@beta // 下载测试版
发布npm包
有作用域的npm
如:@wooc/brokenwheel
私有作用域的需要付费
如npm包为公开的带作用域的包,发布时使用以下命令,表示公开:
npm publish --access public
没有作用域的
如:brokenwheel
将需要发布的npm测试完毕后,开始输入进入项目根目录,执行发布命令
npm publish
如果出现以下错误
则为邮箱验证问题,一般为第一次注册,需要验证邮箱之后,再次发布
#在官网登录,找到顶部的提示,如果没有,刷新几次就会出现下图中的文字提示
点击链接,npm会发送验证邮件到邮箱中,在邮箱中查看并验证,验证成功后再次执行
npm publish
在这期间可能会出现npm包名重复的错误,报错如下
npm ERR! You do not have permission to publish "npmtest". Are you logged in as the correct user?
将 package.json 中的项目名称更换,再次发布即可。
发布成功会出现以下提示
发布成功并出现当前发布 npm 包的版本号
再次到官网登录,你的项目记录下,就可以看到你刚刚发布的 npm 包
下载并测试刚发布的npm包
这里以我刚刚发布的处理格式化的 npm 包为例
下载、使用均正常。发布成功!
还可能出现的问题
npm 的源地址问题
很多国内的同学会将 npm 的镜像源指向淘宝,虽然速度上提高了,但在发布 npm 是发布在 npm 的镜像源上,所以,如果报以下错误,请将源地址改回 npm 的镜像源
报错:
npm ERR! 403 403 Forbidden - PUT https://registry.npm.taobao.org/canvas2file - [no_perms] Private mode enable, only admin can publish this module
改正:
1、查看当前镜像地址
npm get registry
2、修改为npm镜像地址
npm config set registry https://registry.npmjs.org/`
更新已经发布的npm包
一、在本地更新这个包的版本 ,两种方式
1、npm version <update_type>
2、直接在项目的 package.json 中更改 version 的值也可
二、提交到远端 npm 中,使用命令
npm publish // 发布 npm 包
npm version update_type // 更新包的版本
有三个参数,当前版本为1.0.0
1、patch:补丁 // 执行后:1.0.1
2、 minor:小修改 // 执行后: 1.1.0
3、 major:大版本迭代 // 执行后: 2.0.0