Ly

搭建内网npm缓存服务器

前端项目慢慢变大以后,等待编译过程就变得很无聊,为什么不能让他快一点呢?

Verdaccio 是一个 Node.js 开发的私有化 registry 代理,部署在内网后,Verdaccio 会代理所有 npm install 请求, 并将 node modules 缓存到本地, 下次再安装时将从本地直接获取, 项目CI/CD编译速度可以获得极大改观.

Install verdaccio

npm安装 node-gyp verdaccio, 如果已经安装过 node-pyg 则无需再次安装.

npm install --global node-gyp verdaccio --registry=https://registry.npm.taobao.org

Configuration

vim /root/.config/verdaccio/config.yaml

按照如下配置修改配置文件

storage: /root/.local/share/verdaccio/storage
plugins: ./plugins

web:
  title: Verdaccio

auth:
  htpasswd:
    file: ./htpasswd

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

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - {type: stdout, format: pretty, level: http}

Start via supervisor

vim /nxdata/supervisord/verdaccio.ini

将 verdaccio 配置为自动启动.

[program:verdaccio]
command=verdaccio -l 172.17.51.54:4873
directory=/nxdata/www/somewhere
numprocs=1
stderr_logfile=/nxdata/logs/supervisor/verdaccio-stderr.log
stdout_logfile=/nxdata/logs/supervisor/verdaccio-stdout.log
stderr_logfile_maxbytes=1MB
stdout_logfile_maxbytes=1MB
redirect_stderr=true
autostart=true
autorestart=true

处理Nginx配置

新建一个 nginx 配置文件, 给其配置域名, 或直接使用内网 IP.

server {
    listen 80;
    server_name npm.nxdev.cn;
    charset utf-8;

    location / {
        proxy_pass http://172.17.51.54:4873;
    }
}

启动服务

supervisorctl reload
systemctl reload nginx

Usage

在内网其他机器上使用npm 安装依赖时, 指定 registry server

npm install --registry=http://npm.nxdev.cn

或直接设置全局配置

npm set registry http://npm.nxdev.cn

说明

Verdaccio 本地文件缓存存储位置:

/root/.local/share/verdaccio/storage
- END -
上一篇: Go Composer | PHP Package 代理
下一篇: 初中生活正式拉开序幕