前言
在前端开发中,总会慢慢沉淀一些可复用的组件或工具等。当项目增多,跨项目复用的需求也随之而来。将这种可复用的组件或工具等抽离成一个个 npm 库便是一种好的选择。在公司内部,有时我们并不希望这些对外,那么私有 npm 库便是一种方案。
方案
在自建的私有 npm 库中,主要的方案有 Nexus、cnpm、verdaccio 等。Nexus 大而全,不仅仅支持 npm,还支持常见语言的的包管理等。cnpm 是阿里开源的一套方案,需要数据库等。而 verdaccio 则是在 sinopia 停止维护后,fork 并更新迭代的一个轻量级的私有 npm 库方案。
在早期,我们团队是使用的 Nexus。因为公司后端在使用,当时便想着直接使用即可。但实际使用过程中,遇到了一些。经过排查是问题,是 Nexus 本身的问题,在后续的迭代版本才会解决。因运维他们不愿升级,只好作罢。后来,选择了 verdaccio 搭建。目前已经使用了一年多,还没有出现问题,非常稳定。
因此,本文将以 verdaccio 来讲讲搭建私有 npm 库。
安装
verdaccio 的安装十分简单,使用 npm 或 yarn 安装均可。同时,我们将使用 pm2 来做进程管理。
npm i -g verdaccio pm2
使用
安装后,运行 verdaccio
即可启动服务,看到配置的默认路径。
在浏览器打开 http://localhost:4873/ 即可看到站点的内容。
在客户端,输入以下命令并输入自己的 npm 账号及密码,即可登录。登录后,就可以发布自己的 npm 包了。
npm adduser --registry http://localhost:4873
同时,我们可以使用 nrm 来管理不同 registry:
npm i -g nrm
nrm list
nrm add verdaccio http://localhost:4873/
nrm use verdaccio
配置
当然,有时需要修改部分默认配置。可以打开上面的配置文件地址。然后根据实际需求进行修改。比如修改 npmjs 地址,这样可以让非私有的包,走淘宝镜像,速度更快。以下为一个示例配置:
# https://github.com/verdaccio/verdaccio/blob/master/conf
storage: /verdaccio/storage
web:
title: Verdaccio
i18n:
web: zh-CN
auth:
htpasswd:
file: /verdaccio/conf/htpasswd
uplinks:
npmjs:
url: https://registry.npm.taobao.org/
cache: false
packages:
'**':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
logs:
- { type: stdout, format: pretty, level: http }
修改配置后,可以使用 pm2 来启动服务。
pm2 start verdaccio
结语
以上就是一个私有 npm 库的搭建。总体而言,比较简单。可再根据自己的情况,配置域名之类的即可。