verdaccio是什么
在日常的开发中, 我们非常需要一个npm私有仓库存放相关公用的组件及模块, npm私有仓库我们可以理解为公司内部的类似 npmjs.org 这样子管理包的平台, 在公司内部搭建一个npm仓库,管理包的同时,也可以借助npm的命令行工具快速用代码模块或业务组件。
Verdaccio 是一个简单的、零配置本地私有 npm 软件包代理注册表。Verdaccio 开箱即用,拥有自己的小型数据库,能够代理其它注册表(例如 npmjs.org),缓存下载的模块。此外 Verdaccio 还易于扩展存储功能,它支持各种社区制作的插件,以连接到亚马逊的 s3、谷歌云存储等服务或创建自己的插件。
verdaccio怎么用
因为本文强调使用,所以从完成在服务器IP地址上部署verdaccio后介绍,部署好后如下图所示,大家可直接进入自己部署的地址了解已发布包的相关信息(如图所示,已上载了react-cli和npmdemo作为示范),感兴趣的同学可以参考verdaccio+pm2完成npm私有库部署: blog.51cto.com/u_15065852/…在本地环境部署试试,现在我们直入主题,分编写包、发布包、下载包三个模块开始了解怎么使用已经部署好的verdaccio环境完成包的发布与下载,在每个模块最后包含一些注意事项供操作参考。(笔者以下按部署到xx.xx.xx.xx:4874举例)
编写包
制作一个npm包(以下仅供参考)
- 新建一个文件夹取名 npmdemo
- npm init新建一个package.json(package.json为发布必须文件,其属性示例可参考package.json属性指南:blog.csdn.net/weixin_4872…)
{
"name": "npmdemo",
"version": "4.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "superlitfan <1xxxxxxx6@qq.com>",
"license": "ISC"
}
- 新建index.js
module.exports = function() {console.log('这是一条来自私有库的console!!!') };
发布包
前置操作(换源+登陆)
1.这里我们使用nrm去管理npm的源,下载方式:
npm install -g nrm
2.下载之后通过下述命令添加指定源(这里77test是源的对应名字,可更改):
nrm add 77test xx.xx.xx.xx:4874
3.执行nrm ls可看到目前所有源:
4.通过nrm use切换当前源:
5.登陆:
私有npm仓库中发布包需要注册或登录账号, 如果我们还没有账号的话,通过输入命令npm adduser, 然后依次输入用户名密码即可创建完毕。如果已有账号,通过输入命令 npm login,然后依次输入用户名密码即可登录(注意发布前一定要将nrm切换到npm的源)
登录后可通过npm whoami查看当前登陆账号:
发布
编写好需要发布的包,并完成上述换源+登陆的前置操作后,去到待发布包根目录下执行npm publish
\npmdemo> npm publish
npm notice
npm notice 📦 npmdemo@4.0.0
npm notice === Tarball Contents ===
npm notice 92B index.js
npm notice 314B package.json
npm notice === Tarball Details ===
npm notice name: npmdemo
npm notice version: 4.0.0
npm notice filename: npmdemo-4.0.0.tgz
npm notice package size: 433 B
npm notice unpacked size: 406 B
npm notice shasum: 9271c691153eddc731150ac5601aeab48670083d
npm notice integrity: sha512-FVadddyH6MXWB[...]D6HwLuCjSw0gQ==
npm notice total files: 2
npm notice
npm notice Publishing to http://xx.xx.xx.xx:4874/
+ npmdemo@4.0.0
看到+ npmdemo@4.0.0就是发布成功啦,然后在xx.xx.xx.xx:4874就能看到新发布的包。
注: 如果是迁移别人的包发布到私库,记得查看待迁移包内package.json中的publishConfig属性中的registry属性值:
如果有值的话应当为需要发布到的私库地址,不然会报以下错误。
下载包
1.在需要使用私有库包的项目根目录下添加.yarnrc文件(如果是用npm就添加.npmrc)并设置目标源registry:
registry "http://xx.xx.xx.xx:4874/"
2.在需要使用私有库包的项目根目录下的package.json文件中引入需要的私有库依赖,如引入我们之前发布的npmdemo,并指定版本为4.0.0:
{
"name": "npmdemo3",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"npmdemo":"^4.0.0"
}
}
3.利用nrm切换到私有库源:
4.yarn install后可以看到node_moudles下有我们的依赖的私有库包npmdemo,至此我们就在项目中下载成功啦~!
注: 在更换目标源为私有库地址后,下载流程为先在私有库寻找包,私有库没有会在verdaccio配置文件config.yaml配置好的上游链接里下载(目前配置的上游连接是registry.npmjs.org/,后续有需要可以更改为淘宝镜像地址或其他)。
Q&A
Q:如何配置verdaccio,诸如权限、上游下载链接、存储地址等?
A:登陆服务器,去到/home/dev/.config/verdaccio,根据verdaccio配置文件config.yaml详解:blog.csdn.net/YYZZHC999/a…修改上述路径下config.yaml文件,注意修改了配置文件后,记得运行命令:
verdaccio -c config.yml
Q:如何删除已发布的包?
A:登陆服务器,去到/home/dev/.local/share/verdaccio/storage(注意:存储路径也可在上述配置文件里更改,/home/dev/.local/share/verdaccio/storage是笔者部署verdaccio的默认存储的位置),手动删除。
参考资料
verdaccio官方文档 : verdaccio.org/docs/what-i…
verdaccio+pm2完成npm私有库部署: blog.51cto.com/u_15065852/…
使用verdaccio搭建npm私有库: segmentfault.com/a/119000002…
package.json属性指南: blog.csdn.net/weixin_4872…
verdaccio配置文件config.yaml详解: blog.csdn.net/YYZZHC999/a…