阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      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-l4873-p 7000HTTP 监听端口
      --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的每个部分中的所有字段。

      注册表将完全脱机。

      目录
      目录