npm发布及常见问题

917 阅读3分钟

「这是我参与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