NPM本地资源库搭建与使用
Author:zhoulujun Date:
使用 git+ssh 这种方式直接引用到 GitHub 项目地址,也可以解决私有包问题。但是
公司对于搭建本地私有npm库有如下要求:
私有包托管在内部服务器中
项目中使用了公共仓库上的公共包,也使用了内部服务器上的私有包
希望下载的时候,公共包走公共仓库,私有包走内部服务器的私有仓库
服务器硬盘有限,希望只缓存下载过的包,而不是全部同步。
对于下载,发布npm包有对应的权限管理,安装方便,配置简单,依赖少。
Sinopia 是一个零配置的私有的带缓存功能的npm包管理工具。
Sinopia搭建
Sinopia 是一个零配置的私有的带缓存功能的npm包管理工具,作者是是rlidwka,一个大神,也是一只猫~ 往社区内贡献过很多代码,包括 jshttp, markdown-it 等等,也是 Node.js 核心代码库的活跃贡献者。
使用sinopia,你不用安装CouchDB或MYSQL之类的数据库,Sinopia有自己的迷你数据库,如果要下载的包不存在,它将自动去你配置的npm地址上去下载,而且硬盘中只缓存你现在过的包,以节省空间。
为什么选择sinopia
sinopia有以下几个优势值得关注:
不同步拉取npm库,占据大量硬盘,没有硬盘被撑爆的问题;
安装配置极其简单,不需要数据库;
支持配置上游registry配置,一次拉取即缓存;
支持forever及pm2守护进程管理;
规划目录(下为本次安装的实际目录,可根据实际环境调整)
项 | 目录 | 账户 | 备注 |
npm、nodejs解压目录 | /opt/software | nadmin |
|
sinopia启动时目录 | /home/nadmin | nadmin |
|
sinopia的passwd路径 | /home/nadmin/node_htpasswd | nadmin | |
sinopia的storage路径 | /home/nadmin/sinopia/storage | nadmin | 建议磁盘空间较大不推荐放在home目录 |
具体安装步骤
首选安装nodejs基本环境,然后安装sinopia,在安装pm2保活
安装node和npm
nodejs/npm 软件名称: node-v6.9.1-linux-x64.tar.gz 下载地址:https://npm.taobao.org/mirrors/node/v6.9.1/
centos
wget https://nodejs.org/en/download/node-v10.15.0-linux-x64.tar.xz xz -d node-v10.15.0-linux-x64.tar.xz tar -xf node-v10.15.0-linux-x64.tar.xz
重点是要找到你的nodejs的文件路径(你将node文件解压到哪里就是哪里。),找不到node路径的童鞋请执行
whereis node
然后执行
ln -s node路径 /usr/bin/node ln -s node路径 /usr/bin/npm eg: //我的node解压路径为/opt/node-v10.15.0-linux-x64/bin/node ln -s /opt/node-v10.15.0-linux-x64/bin/node /usr/bin/node ln -s /opt/node-v10.15.0-linux-x64/bin/node /usr/bin/npm
如果出现
ln: failed to create symbolic link ‘/usr/bin/node’: File exists 执行:rm /usr/bin/node
查看是否安装成功
常规安装
wget https://nodejs.org/en/download/node-v10.15.0-linux-x64.tar.xz tar -xvf node-v6.9.1-linux-x64.tar.gz
添加node_home到环境变量,用root账户修改/etc/profile
$vim /etc/profile #追加 NODE_HOME=/opt/software/node-v6.9.1-linux-x64 PATH=$PATH:$NODE_HOME/bin
source 使配置生效
source /etc/profile
配置生效之后,在任意地方可查看版本,看是否需要版本
配置npm
先查看npm的配置文件地址
$npm config get userconfig /home/nadmin/.npmrc
修改此配置文件,修改后查看,内容如下
$ cat /home/nadmin/.npmrc proxy=http://网络代理ip:8080/ https-proxy=http://网络代理ip:8080/ no_proxy=本地yum源ip registry=https://registry.npm.taobao.org/
也可通过命令设置http网络代理地址和npm server的地址,如下:
npm config set proxy http://server:port
npm config set https-proxy http://server:port
npm config set registry "http://registry.npmjs.org/"
安装sinopia
装好node以后,我们就可以在服务器直接安装sinopia了,一行命令全局安装
npm install -g sinopia
Sinopia的特点是,你在哪个目录运行,它的就会在对应的目录下创建自己的文件。目录下默认有两个文件:config.yaml和storage,htpasswd 是添加用户之后自动创建的
由于每次启动默认的config.xml文件是从原始文件default.yaml拷贝而来,可先修改sinopia原始的default.yaml
地址:sinopia安装目录/conf/ default.yaml
$ pwd /opt/software/node-v6.9.1-linux-x64/lib/node_modules/sinopia/conf $ ll total 12 -rw-rw-r-- 1 nadmin nadmin 1309 Nov 9 19:52 default.yaml -rw-rw-r-- 1 nadmin nadmin 4076 Jun 7 2015 full.yaml -rw-rw-r-- 1 nadmin nadmin 39 Jun 7 2015 README.md
修改完毕,内如下:
storage: ./storage auth: htpasswd: file: /home/nadmin/node_htpasswd uplinks: npmjs: url: http://registry.npm.taobao.org/ packages: '@*/*': access: $all publish: $authenticated '*': access: $all publish: $authenticated proxy: npmjs logs: - {type: stdout, format: pretty, level: http} listen: 0.0.0.0:4873 http_proxy: http://代理服务器ip:8080 https_proxy: http://代理服务器ip:8080
启动 sinopia
在规划好的启动目录下执行命令sinopia
$ pwd /home/nadmin $ sinopia warn --- config file - /home/nadmin/sinopia/config.yaml warn --- http address - http://0.0.0.0:4873/ http --> 200, req: 'GET http://registry.npm.taobao.org/express', bytes: 0/578356 http <-- 200, user: admin, req: 'GET /express', bytes: 0/34448 http --> 200, req: 'GET http://registry.npm.taobao.org/type-is', bytes: 0/54083
sinopia已经启动,可正常使用,此种方法日志会输出到控制台,不建议使用,后面会介绍使用pm2对sinopia进程进行托管启动的方法。
访问http://ServerS::4873 查看页面,看到如下页面,说明sinopia安装成功!
安装pm2
node服务非常脆弱,一般在实际中使用都会配合守护进程。这里我用的是 pm2 做守护进程
使用pm2托管的进程可以保证进程永远是活着的,尝试通过kill -9去杀sinopia的进程发现杀了之后又自动启起来。推荐使用此种方式启动sinopia.
npm install -g pm2 pm2 start sinopia
pm2 开机自启动sinopia
pm2 startup centos,根据提示用root账户执行:
su -c "env PATH=$PATH:/opt/software/node-v6.9.1-linux-x64/bin pm2 startup centos -u nadmin --hp /home/nadmin"
pm2 启动sinopia 4个进程,且保存日志
pm2 start sinopia -i 4 --watch --merge-logs --log-date-format="YYYY-MM-DD HH:mm: Z" -l /opt/log/sinopia.log
保存当前配置,开机自启动时按照此时配置启动
pm2 save
nrm是 npm registry 管理工具, 能够查看和切换当前使用的registry。不安装也可以。
verdaccio
sinopia基本已经停止了对sinopia的维护和升级
然后真是留了一堆坑,所幸不是没人管,只是有一群人又出了一个sinopia的fork,也就是sinopia的分支,而且还起了个洋气的意大利名verdaccio ,但是verdaccio 确实是正在维护的
npm install -g verdaccio --unsafe-perm
加上–unsafe-perm的原因是防止报grywarn权限的错。
verdaccio配置
verdaccio 的特点是,你在哪个目录运行,它的就会在对应的目录下创建自己的文件。目录下默认有两个文件:config.yaml和storage,htpasswd 是添加用户之后自动创建的;
由于第一次启动默认的config.xml文件是从原始文件default.yaml拷贝而来,可先修改verdaccio 原始的default.yaml。
地址:verdaccio 安装目录/conf/ default.yaml。
verdaccio继承了sinopia,端口号4873依然不变。
firewall-cmd --state # 先查看防火墙状态, service firewalld start # 开启防火墙: firewall-cmd --zone=public --add-port=4873/tcp –permanent #开放4873端口 firewall-cmd --reload #重新载入 firewall-cmd --zone=public --query-port=4873/tcp #查看是否添加成功
启动
pm2 start verdaccio
npm 设置地址
查看当前地址:
npm config get registry
https://registry.npmjs.org/
设置当前地址(设置为淘宝镜像)
npm config set registry http://registry.npm.taobao.org/
-- 每次执行命令前加入–registry指定仓库路径
npm --registry https://registry.npm.taobao.org install
把淘宝地址,换成自己的地址即可。
参考文章
npm 私服工具verdaccio 搭建(一) (ps:欲使用sinopia搭建私服的一定要看过来) https://blog.csdn.net/yyzzhc999/article/details/80097073
用sinopia搭建npm私服 https://www.cnblogs.com/LittleSix/p/6053549.html
从0开始使用sinopia搭建私有npm仓库 https://segmentfault.com/a/1190000017941736?utm_source=tag-newest
使用Sinopia搭建私有的npm仓库 https://segmentfault.com/a/1190000005790827
sinopia的部署和使用 https://www.jianshu.com/p/737d38e9bb1e
转载本站文章《NPM本地资源库搭建与使用》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/nodejs/8541.html