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

https://a.axihe.com/npm/verdaccio/verdaccio-info.png

命令行参数

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的每个部分中的所有字段。

注册表将完全脱机。

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了