如何从0到1搭建一个npm私有仓库

1,882 阅读2分钟

npm私有仓库的作用

  • 在一个中大型企业中,可以将私有包托管在私仓上,不对外发布。
  • 在项目中使用的包可以缓存在私仓上,down下来的速度明显要快。
  • 下载、发布npm包都有自己的权限管理。
  • 在团队中,可以激励自己与其他成员的开源、创新能力,共同提高。

多说无益,let us go!

1、在服务器下安装node环境:nodejs.cn/download/
2、安装verdaccio:npm install -g verdaccio
3、verdaccio安装成功后,尝试启动:

test1.png

如图,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

test2.png

当提示yes时,说明端口已开放。

5、启动verdaccio

verdaccio

启动成功后,访问服务器外网,域名是4873,此时会看到

test3.png

说明启动已成功!

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来代替防火墙暴露端口的情况来搭建私仓。