一、为什么要搭建npm私库
原因:
1)公司内部开发的私有包,统一管理,方便开发和使用;
2)安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便使用;
3)加速,自己搭建npm 服务器,本身可以自带常用package的缓存,而npm 的速度有些感人,自建的服务器会缓存下载过的包,能节省时间;
二、为什么用verdaccio 替换 sinopia
为什么选择verdaccio,因为sinopia到2015年10月后,已经早不维护了,似乎作者不见了踪影。而verdaccio是sinopia的一种新的web【react】端的实现形式,并且目前一直在维护中。
三、搭建verdaccio
基础环境:
[root@monitor-cicd ~]# uname -r 3.10.0-862.11.6.el7.x86_64 [root@monitor-cicd ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@monitor-cicd ~]# node -v v10.14.2
3.1 安装verdaccio
使用npm 全局安装即可
npm install -global verdaccio --unsafe-perm #--unsafe-perm 说明:npm会有生命周期,某个包会有生命周期来执行一些东西,安全起见会自动降级导致没有权限执行一些操作,通过--unsafe-perm参数来解锁该限制。
npm报权限错误参考案例:https://blog.csdn.net/weiguang1017/article/details/78813901
3.2 修改配置文件
安装完需要启动(执行 /application/nodejs/bin/verdaccio )一下,才能生成配置文件。
vim /root/.config/verdaccio/config.yaml
需要改动2处:
1)npm镜像下载地址:
旧:url: https://registry.npmjs.org/ (国外) 新:url: http://registry.npm.taobao.org/ (阿里云)
2)指定ip端口:
在配置文件末尾添加如下:(因为默认是localhost:4873 (弊端:只能在本机访问)) #指定ip端口 listen: 0.0.0.0:4873
其余解释:
storage: ./storage # 所有包的缓存目录 plugins: ./plugins # 插件目录 file: ./htpasswd # 用户信息存储目录
3.2 使用pm2 守护verdaccio进程
安装pm2并使用pm2启动verdaccio,使用pm2托管的进程可以保证进程永远是活着的,尝试通过kill -9去杀verdaccio的进程发现杀了之后又自动启起来。推荐使用此种方式启动verdaccio。
安装pm2:
npm install -g pm2 --unsafe-perm
使用pm2启动verdaccio:
/application/nodejs/bin/pm2 start /application/nodejs/bin/verdaccio
3.3 将当前npm服务指向本地
npm set registry http://127.0.0.1:4873