verdaccio搭建私有npm服务

posted @

verdaccio搭建简述(以windows平台为例)

安装

npm i -g verdaccio 安装verdaccio

启动及配置

  • 控制台执行 verdaccio 即可开启服务

    可以快捷命令指定IP和端口开启服务:如verdaccio --listen 0.0.0.0:80

    • 默认服务端口是 4873 ,通过http://localhost:4873即可访问
    • 服务的配置及存储文件位置在 %USERPROFILE%/AppData/Roaming/verdaccio(注意这个文件夹要运行一次verdaccio才会存在)
    • 其中config.yaml,是服务的配置文件,大部分配置注释中都有说明
    • 这里我们将其中的listen改成0.0.0.0:4873,使服务在局域网可以访问,如图
       # https://verdaccio.org/docs/configuration#listen-port
       listen:
           0.0.0.0:4873            # default value
      
      另外注意防火墙入站规则要放行4873端口,否则会导致局域网其他主机无法访问服务
      更多配置及使用说明详见官方文档
    • 服务的开启可以考虑使用pm2(一个NodeJs下进程管理的东东)
      • pm2 -h可以查看所有命令
      • 有时候pm2开启会error,直接使用verdaccio命令开启就行,具体错误我没有去排查
    • 设置里有语言切换和操作提示

  1. 接下来就是常规的npm操作了

    1. nrm add local http://127.0.0.1:4873将verdaccio搭建的npm本地服务源添加到nrm列表中(这里为了方便,使用了nrmnpm i -g nrm
    2. nrm use local 将源切换到本地npm服务,local只是起的一个本地名字,不必纠结
  2. 添加用户

    • npm adduser
    • 输入用户名和密码
    • 创建成功后会提示如Logged in as username on http://127.0.0.1:4873/
  3. 然后就是常规的使用了

    • 前面的步骤配置好后,和常规的npm使用就是一样的了,npm publishnpm install之类的
    • 在配置正确的情况下,可以包发布到本地服务,也可以从本地服务安装已经发布的包。
    • 安装时,如果本地服务没找到对应的包,将到官方源寻找
  4. 安全问题
    如果有需要将verdaccio放在公网服务器的情况下,就需要考虑到安全问题了。不可能开放到谁都能访问和发布。
    详细见另一篇文档verdaccio搭建之简易的安全控制 (编写中。。。)

常见错误

  • 执行pm2 start verdaccio之后服务不可访问,此时可以执行pm2 ls查看已开启的服务列表,如果发现verdaccio的状态是stopped,说明开启异常。执行pm2 log查看日志信息,根据报错进行排除
  • npm发包时发不出去,如果以前有发布到别的源上,除了指定当前需要发布的对象源之外,还需要把package-lock.json删除才能发布
  • nrm配置的npm源,verdaccio可能不会继承(印象中旧版本是继承的...)。
    因为npm默认镜像源连接质量差,verdaccio很容易报 uplink is offline 的问题(因为连接超时了)。
    如果需要,排查到这个错误时,到配置文件(config.yml)修改uplinks为需要的npm源,然后重启verdaccio服务即可
    # https://verdaccio.org/docs/configuration#uplinks
    # a list of other known repositories we can talk to
    uplinks:
      npmjs:
        # url: https://registry.npmjs.org/
        url:  https://registry.npmmirror.com/ 
    
  • error reading package.json: Bad control character in string literal in JSON at position 980828
    部分包代理会出现这个问题,比如rollup。这个我没有具体细究原因,可能与配置有关。
  • No matching version found... 这个表示没找到对应版本的包。但是,pm2开启的verdaccio服务可能会存在这个问题,
    可以尝试不通过pm2,直接开启verdaccio来排查。

相关链接

转载请注明出处@https://www.cnblogs.com/noah227/p/16547853.html
posted @   彼时今日  阅读(543)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示