likes
comments
collection

2022 年从零搭建 npm 私服教程

作者站长头像
站长
· 阅读数 10

presence 2.0 准备发布了!

在发布之前,需要进行内部测试,所以我们需要部署一套测试环境。

后端的测试环境很容易就搭建完成了。但前端只是一个 js 包,理论上前端不需要测试环境,只需要打个包发给测试同学就可以了。但是我觉得应该尽量模拟真实的发包流程,所以我决定使用 verdaccio 搭建一个 npm 私服。

说干就干,让运维同学给我准备了一台 Ubuntu 服务器,开始搭建环境。

verdaccio 是意大利语绿色的意思,verdaccio 的颜色刚好是绿色。verdaccio 是一个轻量级的 npm 注册中心,支持本地安装。是搭建 npm 私服的首选技术方案。

由于很久没有装过 verdaccio 了,一些事物可能发生了些变化,所以写篇文章记录下来,方便后面查看。

Nodejs 安装

首先使用 ssh 进行登陆。

ssh username@ip -p port

接下来安装 Nodejs,因为 verdaccio 是基于 Nodejs 开发的,所以需要 Nodejs 的环境。

安装 Nodejs 有很多种方式。

  • apt install nodejs,这种方式安装下来的 Nodejs 版本是 10.x,Verdaccio 至少需要 Nodejs 12.x +。然后我们再通过 npm i -g n 安装 n,再通过 n 来升级 Nodejs 版本。
  • 使用 nvm。
  • 二进制安装,直接从 Nodejs 官网下载二进制压缩包安装,然后配置 profile 文件。
  • 通过 nodesource 脚本更新 Nodejs 版本到 apt。

由于网络原因和系统原因,前三种方式都不适合我的情况。

下面介绍第四种方式。

首先更新 apt。

sudo apt update
sudo apt upgrade

更新之后安装 curl。

sudo apt install -y curl

通过 curl 请求 nodesource 的脚本,并执行它。

sudo curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

运行成功后,再来安装 nodejs。

sudo apt install -y nodejs

安装完成后,nodejs 的版本为 16.18.1。

node -v
v16.18.1

设置 npm 源

接下来进行装包,发现直接卡住。

npm i -g verdaccio

然后我在 github 上面查到了这个 issues。github.com/npm/cli/iss…

于是我开始测试 register.npmjs.org 的连接情况,发现连不通。

2022 年从零搭建 npm 私服教程

设置为淘宝镜像源。

npm config set registry https://registry.npm.taobao.org

现在 npm 源的问题也解决了。

之后可以使用 nrm 来管理 npm 的源。

sudo npm i -g nrm

启动 verdaccio

解决好网络问题后,继续安装 verdaccio。

npm i -g verdaccio

安装完成之后直接运行 verdaccio。

verdaccio

不出意外就启动起来了。可以通过 http://localhost:4873 来访问 verdaccio。

向外网暴露端口

接下来需要向外网暴露端口。

配置 verdaccio

首先来修改 verdaccio 的配置文件。在第一次启动 verdaccio 时,会创建一个 ~/users/.config/verdaccio/config.yaml 文件。

找到 listen 的配置,把监听的 ip 和端口设置为 0.0.0.0:4873,大概在 150 行左右。

listen:
  - 0.0.0.0:4873

这样才可以向外网暴露端口。

修改完之后,重新启动 verdaccio。

域名也可以在这里配置。

除了配置 listen 以外,还需要配置 unlinks,大约在 65 行,把 npmjs url 的值改为淘宝的镜像源,否则影响发包。

uplinks:
  npmjs:
    url: https://registry.npm.taobao.org/

配置防火墙

只配置 verdaccio 是不够的,还需要配置防火墙。

我使用的是 firewall-cmd。

首先添加对外暴露的端口 4873。

firewall-cmd --add-port=4873/tcp --permanent

然后刷新防火墙配置。

firewall-cmd --reload

现在可以通过外网访问了。

使用 pm2 后台启动 verdaccio

通过 SSH 启动的 verdaccio,一旦会话断开服务也会停掉。

可以通过守护进程命令 nohup 来启动,防止挂掉。简单粗暴而且有效。

pm2 也是一种不错的方式,这里我使用了 pm2 来管理后台进程。

首先安装 pm2。

npm i -g pm2

安装成功后运行下面的命令启动 verdaccio。

pm2 start verdaccio

发包

首先使用 nrm 添加一下私服的源。

nrm add name ip:port

然后创建一个用户。

npm adduser

输入用户名、密码、邮箱就创建好了。

创建好用户之后,会自动登录。

登录之后找到要发布的包,运行npm publish,发布成功!

回到 verdaccio 网页中,刷新页面,就可以看到发布的包了!

2022 年从零搭建 npm 私服教程