npm私有仓库的作用
- 在一个中大型企业中,可以将私有包托管在私仓上,不对外发布。
- 在项目中使用的包可以缓存在私仓上,down下来的速度明显要快。
- 下载、发布npm包都有自己的权限管理。
- 在团队中,可以激励自己与其他成员的开源、创新能力,共同提高。
多说无益,let us go!
1、在服务器下安装node环境:nodejs.cn/download/
2、安装verdaccio:npm install -g verdaccio
3、verdaccio安装成功后,尝试启动:
如图,config file 即为配置文件的路径,在配置文件最后添加监听端口:
listen: 0.0.0.0:4873
保存!
4、centos7对外开放4873端口(--zone #作用域 --permanent #永久生效)
firewall-cmd --zone=public --add-port=4873/tcp --permanent
重新载入:
firewall-cmd --reload
查看是否添加成功:
firewall-cmd --zone=public --query-port=4873/tcp
当提示yes时,说明端口已开放。
5、启动verdaccio
verdaccio
启动成功后,访问服务器外网,域名是4873,此时会看到
说明启动已成功!
6、pm2守护进程 如果未安装pm2,先通过npm安装:
npm install pm2 -g
接下来,用pm2来启动verdaccio:
pm2 start verdaccio
7、测试 按照提示发布第一个npm包,新建一个文件夹
npm init
登录
npm adduser --registry http://your-ec2-public-ip-address:4873/
发布
npm publish --registry http://your-ec2-public-ip-address:4873/
注意修改为自己的域名。此时刷新页面,看到npm包已更新!
至此,已完成私有仓库的搭建。
2023年8月10日补充
近期在公司发现搭建后的verdaccio莫名的消失了,登录了跳板机后查看了一下,发现是由于防火墙关闭导致端口不能再暴露出来,在与运维的同事沟通后,原来关掉防火墙是为了另一个业务线的web工程不受影响。
于是,我发现了另一种守护进程的方式:nohap
具体怎么实现呢?请看下文:
1、首先我们先写一个简单的脚本 daemon.c,不让进程退出
#include <unistd.h>
#include <stdio.h>
int main(){
while(1)
{
sleep(1);
}
return 0;
}
2、然后使用gcc 命令编译这个脚本得到执行文件 daemon,然后使用nohup 命令运行这个文件nohup命令的格式是:
# 将程序变为守护进程
nohup verdaccio &
# 将程序变为守护进程,执行产生的信息输出到log文件
# 2>&1 的作用是标准输出和标准错误同等对待,都输出到log文件
nohup verdaccio > log 2>&1 &
3、我们在命令行输入 nohup ./daemon & ,然后输入 ps ajx | grep ./daemon 查看是否运行成功,访问内网私仓,有可以正常访问啦[庆祝][庆祝][庆祝]
总结
在影响到公司业务的情况下,可以通过nohap来代替防火墙暴露端口的情况来搭建私仓。