Skip to content

组件库的 npm 包发布和维护 ​

基于 elementPlus 开发的组件库,进行 npm 私库发布和维护的流程

一、npm 仓库介绍 ​

npm 是一个包管理工具,分为私有库和公有库,在日常工作中, 我们在开发过程中, 总是会出现一些共用的组件或者公共方法, 如果每次每个项目都要黏贴复制,还会出错, 为了降低开发成本可以把它独立为一个 npm 库, 一般都是搭建在公司私有库, 但是,我们可以使用自己的私有源来做测试

二、npm 私有仓库的搭建 ​

搭建私有仓库的工具很多,这里使用的是 verdaccio 搭建私有仓库,它是免费的而且是傻瓜式的安装.

node 版本 ​

本地的 node 版本需要大于等于 12

安装 Verdaccio ​

全局安装

js
npm install verdaccio -g

安装完成后输入以下命令启动

verdaccio

查看是否安装成功 然后访问 http://localhost:4873/

前台启用使用 verdaccio 命令 后台启用可以使用 pm2 或者其他进程的保护工具, 终端关闭不影响

使用本地库 ​

verdaccio服务启动完成可以使用 nrm 工具进行源地址切换 具体的可以参考我之前写的 npm 添加源和修改源以及查看源

全局安装 nrm

npm install -g nrm

查看已有的配置 nrm ls 添加本地库到 nrm

# 添加配置项
nrm add npmLocal http://localhost:4873

切换 npm 源至私库 ​

nrm use localNpm

npm 私有仓库注册账号 ​

根据提示输入用户名和密码,为后续 npm 包的发布做准备

npm adduser --registry http://localhost:4873/

切换 npm 源至私库 ​

nrm use npmLocal

查看 npm 所有源的列表信息

nrm ls

三、npm 包的发布 ​

新建一个测试文件夹 执行以下命令初始化组件库项目

npm init

对组件库进行打包

npm build

npm 私库发布 ​

确保现在你的 npm 源是自己的 nrm ls 查看一下 前面带有 * 就是目前正在使用的源

在刚刚的项目底下输入

npm login

按照提示输入你的账号密码邮箱,登录完成之后执行以下命令

npm publish

这个时候访问 http://localhost:4873/ 就会有拟新增的那个包

npm 公库发布 ​

你可以发布到 npm 上,这个时候确认你本地的源是 npm 的,然后去注册账号密码邮箱 npm 官网,然后执行以下命令登录 npm 的账号

npm login

进行发布

npm publish

四、npm 包的版本管理 ​

在已有的 npm 包的组件库如何去管理组件的库版本

查看 npm 包版本 ​

执行以下命令查某个 package 在 npm 服务器上所有发布过的版本

# 查看yh-ui的包版本
npm view yh-ui versions

执行 npm ls 可查看当前仓库依赖树上所有包的版本信息。

SemVer 规范 ​

npm 包 中的模块版本都需要遵循 SemVer 规范——由 Github 起草的一个具有指导意义的,统一的版本号表示规则。实际上就是 Semantic Version(语义化版本)的缩写。

TIP

SemVer 规范官网:https://semver.org/

标准版本 ​

SemVer 规范的标准版本号采用 X.Y.Z 的格式,其中 X、Y 和 Z 为非负的整数,且禁止在数字前方补零。X 是主版本号、Y 是次版本号、而 Z 为修订号。每个元素必须以数值来递增。

  • 主版本号(major):当你做了不兼容的 API 修改
  • 次版本号(minor):当你做了向下兼容的功能性新增
  • 修订号(patch):当你做了向下兼容的问题修正。 例如:1.9.1 -> 1.10.0 -> 1.11.0

版本更新 ​

在修改 npm 包某些功能后通常需要发布一个新的版本,我们通常的做法是直接去修改 package.json 到指定版本。如果操作失误,很容易造成版本号混乱,我们可以借助符合 Semver 规范的命令来完成这一操作:

js
npm version patch // 升级修订版本号
npm version minor //升级次版本号
npm version major //d升级主版本号

版本更新之后再执行发布流程,这样版本就更新了

npm publish

五、npm 删除、废弃版本 ​

前面提到过,在一个 npm 包正式发布前,大多会有测试版本。 版本一多,就很容易混淆,甚至忘记版本号。。。

删除版本 ​

删除版本前,一定要确认这个版本的包已经没有依赖(废弃)了。

js
// 假设我的包名是yh-ui测试版本号是1.0.2
// 删除指定版本
npm unpublish yh-ui@1.0.2

// 强制删除包的指定版本
npm unpublish yh-ui@1.0.2 --force

// 删除包
npm unpublish yh-ui

// 强制删除包
npm unpublish yh-ui force

废弃版本 ​

什么是废弃版本?就是 npm 包还在,但是受某些因素影响,该包不再维护,不再更新了。

简单来说,就是不影响使用,但是在安装废弃版本的时候会有提示。

js
// 假设我的包名是yh-ui版本号是1.0.2
npm deprecate yh-ui '不再维护'
npm deprecate yh-ui@1.0.2 '不再维护'