美文网首页
使用verdaccio搭建npm私服仓库

使用verdaccio搭建npm私服仓库

作者: Sunshine_Boys | 来源:发表于2020-12-23 14:24 被阅读0次

    为什么需要搭建私有 npm


    -搭建公司内部中台做铺垫,代码属于公司资产
    -团队内部使用一些待完善package半成品
    -内部使用更安全
    -下载package更快,权限可配置


    包管理的私服工具选型

    maven:更偏向后台使用
    cnpm: 需要安装MySQL,配置比较麻烦
    Verdaccio 是一个 Node.js创建的轻量的私有 npm proxy registry, forked 于 sinopia@1.4.0
    1.与 yarn, npm 和 pnpm 100% 兼容
    2.提供 Docker 和 Kubernetes 支持,相当容易安装和使用
    3.发布的包是私有的并且访问权限可配置
    4.Verdaccio 按需要缓存所有相关项,并在当地或私有网络下可以加速安装

    服务器搭建


    1.安装node
    2.安装verdaccio
    npm install -g verdaccio --unsafe-perm
    

    加上--unsafe-perm选项是为了防止gyp ERR! permission denied权限问题报错

    3.启动verdaccio
    verdaccio
    

    执行结果如下:

    [root@webserver ~]# verdaccio
    *** WARNING: Verdaccio doesn't need superuser privileges. Don't run it under root! ***
     warn --- config file  - /root/.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.10.0
    

    从控制台的输出,我们可以看到:
    verdaccio的配置文件路径在/root/.config/verdaccio/config.yaml和默认访问地址http://localhost:4873/
    在配置文件末尾增加listen: 0.0.0.0:4873保存

    # you can specify listen address (or simply a port)
    listen: 0.0.0.0:4873
    

    查看修改配置文件

    // 进入verdaccio目录
    [root@webserver ~]# cd /root/.config/verdaccio/
    [root@webserver verdaccio]# ls
    config.yaml  storage
    -- 查看该目录下的文件,该目录下默认有两个文件:config.yaml和storage,添加用户之后会自动创建htpasswd
    
    // 查看配置文件
    [root@webserver ~]# vim config.yaml
    

    verdaccio默认配置

    storage: ./storage
    auth:
      htpasswd:
        file: ./htpasswd
    uplinks:
      npmjs:
        url: https://registry.npmjs.org/
    packages:
      '@*/*':
        access: $all
        publish: $authenticated
        proxy: npmjs
      '**':
        proxy: npmjs
    logs:
      - {type: stdout, format: pretty, level: http}
    

    在配置文件config.yaml末尾加入代码:

    # you can specify listen address (or simply a port)
    listen: 0.0.0.0:4873
    
    配置

    在当前用户的 .config/verdaccio 下默认有两个文件:config.yaml 和 htpasswd。这里介绍两个比较重要的配置项,其他的可以官网上查询。

    • htpasswd
      这个文件需要创建了账号才会出现在当前目录
    npm adduser --registry http://localhost:4873
    Username: xxx
    Password:
    Email: (this IS public) xxx@xxx.com
    Logged in as slweb on http://localhost:4873/. #看到这个代表成功了
    [root@webserver verdaccio]# ls
    config.yaml  htpasswd  storage
    #这时就出现了htpasswd。然后修改vim config.yaml
    [root@webserver verdaccio]# vim config.yaml
    auth:
      htpasswd:
        file: ./htpasswd
        # Maximum amount of users allowed to register, defaults to "+inf".
        # You can set this to -1 to disable registration.
        # max_users: 1000
        max_users: -1  # 禁止注册
    

    下面将使用插件注册

    [root@webserver verdaccio]# sinopia-adduser
    username:
    

    注册成功

    [root@webserver verdaccio]# cat htpasswd
    slweb:xxxOkg:autocreated 2020-12-23T08:36:36.974Z
    slweb:{SHA}xxxqUE=:autocreated 2020-12-23T08:37:50.637Z
    
    • url可以配置成淘宝镜像地址:https://registry.npmjs.org/
    • 权限配置(一般团队或者公司的私有项目,会采用不同的权限控制。)
      操作权限:
    • access 表示哪一类用户可以对匹配的项目进行安装(install)
    • publish 表示哪一类用户可以对匹配的项目进行发布(publish)
    • proxy 如其名,这里的值是对应于 uplinks 的
      组权限:
    • all 表示所有人都可以执行对应的操作
    • authenticated 表示只有通过验证的人可以执行对应操作
    • anonymous 表示只有匿名者可以进行对应操作(通常无用)
      例子:
    packages:
      # scoped 包
      '@scope/*':
        access: $all
        publish: $all
        proxy: server2
        
      'supersecret-*':
        # 添加多个组
        access: secret super-secret-area ultra-secret-area
        publish: secret ultra-secret-area
        proxy: server1
    
      'private-*':
         # private-xxx 允许所有的用户安装、认证的用户发布
        access: $all
        publish: $authenticated
        proxy: uplink1
        
      'old-*':  # 不设置 `access`、`publish` 阻止对一组包的访问(不设置proxy阻止代理一组特定包)
    
      '**':
        # 允许所有用户 (包括为验证的用户) 安装和发布
        access: $all
        publish: $all
        proxy: uplink2
    

    设置权限账号(安装插件完成)

    npm install htpasswd-for-sinopia -g
    
    4.使用pm2启动verdaccio

    安装pm2

    npm install -g pm2 --unsafe-perm
    

    使用pm2启动verdaccio,以保证进程一直处于打开状态

    pm2 start verdaccio
    
    5、访问搭建好的私有仓库

    在浏览器中打开http://47.107.60.51:4873 链接

    注意:在阿里云服务器添加安全组,开放 4873 端口号,如果没有添加该端口安全组则不能在浏览器正常访问http://47.107.60.51:4873

    相关文章

      网友评论

          本文标题:使用verdaccio搭建npm私服仓库

          本文链接:https://www.haomeiwen.com/subject/nfpynktx.html