Verdaccio 教程
Verdaccio
Verdaccio 是一个开源轻量的用来做 npm 私服的包(基于 Node.js 创建的)
用任何包管理工具,比如yarn
,npm
使用 verdaccio 是很简单的。
推荐使用 nrm 来管理npm的源
Verdaccio 的官网:https://verdaccio.org/
Verdaccio NPM: https://www.npmjs.com/package/verdaccio
通过 Verdaccio 搭建私服的办法:使用 Verdaccio 搭建 Npm 私服
安装
最低要求
- Node.js
- V10.X 以上
- Npm
- 5.x 以上
- 浏览器
- Chrome, Firefox, Edge, 和 IE11
安装方式
npm install --global verdaccio
或使用 yarn
yarn global add verdaccio
基本使用
一旦安装后,您只需要执行命令:
$ verdaccio
warn --- config file - /Users/broszhu/.config/verdaccio/config.yaml
warn --- Verdaccio started
warn --- Plugin successfully loaded: verdaccio-htpasswd
warn --- Plugin successfully loaded: verdaccio-audit
warn --- http address - http://localhost:4873/ - verdaccio/4.4.0
fatal--- cannot create server: getaddrinfo ENOTFOUND localhost
你可以通过以下命令来设置 npm 从哪个源下载
npm set registry http://localhost:4873/
如果需要,可以传递标志。–registry
npm install --registry http://localhost:4873
在字段中定义。.npmrcregistry
//.npmrc
registry=http://localhost:4873
或在你的 publishConfigpackage.json
{
"publishConfig": {
"registry": "http://localhost:4873"
}
}
推荐使用
上面说的这些我都不推荐使用,我推荐你直接使用 nrm 来管理npm的源,这样可以非常快速的切到Npm官方源/淘宝源/私服源,美滋滋。
查看本机版本
verdaccio -i
命令行参数
verdaccio --listen 4000 --config ~./config.yaml
参数 | 默认值 | 示例 | 描述 |
---|---|---|---|
--listen 或 -l |
4873 | -p 7000 | HTTP 监听端口 |
--config 或 -c |
~/.local/verdaccio/config.yaml | ~./config.yaml | 配置文件路径 |
--info 或 -i |
打印本地环境信息 |
加快构建的策略
避免缓存 tarbal
如果存储空间有限,则可能需要避免缓存 tarball,在每个上行链路中启用 cache:false
将仅缓存元数据文件。
uplinks:
npmjs:
url: https://registry.npmjs.org/
cache: false
延长缓存过期时间
默认情况下,Verdaccio 需要等待 2 分钟才能使缓存元数据无效,然后再从远程注册表获取新信息。
uplinks:
npmjs:
url: https://registry.npmjs.org/
maxage: 30m
增加每个遥控器的值将不太频繁。
如果不经常更新依赖项,这可能是一个有效的策略。maxage uplink
使用内存代替硬盘存储
有时,缓存包不是关键步骤,而不是从不同的注册表路由包并实现更快的生成时间。有两个插件,避免使用内存在物理硬盘中写入。
npm install -g verdaccio-auth-memory
npm install -g verdaccio-memory
配置如下所示
auth:
auth-memory:
users:
foo:
name: test
password: test
store:
memory:
limit: 1000
请记住,一旦重新启动服务器,数据丢失,我们建议您在根本不需要保留的情况下设置此设置。
链接远程
Verdaccio 是一个代理,默认情况下链接公共注册表。
如果在私服里找不到的包,会到你设置的包里进行查找
uplinks:
npmjs:
url: https://registry.npmjs.org/
使用关联范围
使用 访问多个注册表的唯一方法是范围功能,如下所示:.npmrc
// .npmrc
registry=https://registry.npmjs.org
@mycompany:registry=http://localhost:4873
此方法有效,但有几个缺点:
- 它仅适用于作用域
- 范围必须匹配,不允许正则表达式
- 一个作用域无法从多个注册表获取
- 令牌 / 密码必须在其中定义
.npmrc
并签入到回购中。
查看完整示例:https://stackoverflow.com/questions/54543979/npmrc-multiple-registries-for-the-same-scope/54550940#54550940
链接注册表
链接注册表相当简单。首先,在节中定义一个新部分。请注意,此处的顺序无关紧要。uplinks
uplinks:
private:
url: https://private.registry.net/npm
... [truncated] ...
'webpack':
access: $all
publish: $authenticated
proxy: private
添加节以定义要代理的选定注册表。proxy
链接多个注册表
uplinks:
server1:
url: https://server1.registry.net/npm
server2:
url: https://server2.registry.net/npm
... [truncated] ...
'webpack':
access: $all
publish: $authenticated
proxy: server1 server2
Verdaccio 支持现场的多个注册表。
请求将与列表中的第一个一起解决;如果失败,它将尝试与列表中的下一个,等等。proxy
离线注册表
完全有可能拥有完全脱机注册表。如果不希望与外部遥控器连接,可以执行以下操作。
auth:
htpasswd:
file: ./htpasswd
uplinks:
packages:
'@my-company/*':
access: $all
publish: none
'@*/*':
access: $all
publish: $authenticated
'**':
access: $all
publish: $authenticated
删除 proxy packages
的每个部分中的所有字段。
注册表将完全脱机。