verdaccio + npm 搭建私有仓库

470 阅读2分钟

背景

突然间你会发现,做了无数的项目,大部分都是重复的工作,每次新项目、新公司都需要重新搞,没有多少实际的沉淀和积累。将工作中比较重要的东西以组件化的方式发布到npm私有仓库,或许是一个不错的方式!!!

概括

搭建NPM私有仓库主流的有两种:

  1. verdaccio
  2. cnpmjs.org

按照下面的流程半小时搞定,都是非常成熟的工具没啥技术含量,但是要多看官网教程,少看网上资料~~

verdaccio + docker 搭建私有仓库

  1. docker pull verdaccio/verdaccio:4
  2. 新建verdaccio文件夹,并在目录中新建 verdaccio/docker-compose.yaml,并配置信息:
version: '3.1'

services:
  verdaccio:
    image: verdaccio/verdaccio
    container_name: "verdaccio"
    networks:
      - node-network
    environment:
      - VERDACCIO_PORT=4873
    ports:
      - "4873:4873"
    volumes:
      - "./storage:/verdaccio/storage"
      - "./config:/verdaccio/conf"
      - "./plugins:/verdaccio/plugins"  
networks:
  node-network:
    driver: bridge
  1. 新建verdaccio/config/config.yaml

    配置参考官网:verdaccio.org/zh-CN/docs/…

    配置最后添加:listen: 0.0.0.0:4873

image.png

  1. 在新建config中新建verdaccio/config/htpasswd文件(不是文件夹, 账号密码存放的地方)、verdaccio/config/storage,必须有读写权限,否则npm adduser报500;

  2. 启动 verdaccio

docker-compose up -d --build
  1. (可忽略)账号配置,使用htpasswd-for-sinopia生成账号密码,需要提前在verdaccio下创建htpasswd文件,并在verdaccio目录下执行以下命令:
    npm install htpasswd-for-sinopia -g
    htpasswd # 和htpasswd文件同级目录下执行
  1. 本地新增账号发布(建议使用nrm),务必在本地切换源到verdaccio的地址;

    官方教程:verdaccio.org/zh-cn/blog/…

遇到的问题

  1. 无法通过IP+端口号访问docker,查看一下安全策略;

    解决方案:www.cnblogs.com/yyee/p/1507…

  2. npm adduser 报 500;

npm ERR! 500 Internal Server Error - PUT http://your-server-ip:4873/-/user/org.couchdb.user:admin - internal server error

npm ERR! A complete log of this run can be found in:

npm ERR!     /Users/wangyuechao/.npm/_logs/2022-01-12T13_04_49_814Z-debug.log

解决方案:给verdaccio/config/htpasswd增加读写权限!

  1. 以下是工程的目录结构。
目录结构:
- verdaccio
    - config
        - htpasswd
        - storage
    - docker-compose.yaml
    - plugins(docker-compose up -d --build时自动生成)
    - storage(docker-compose up -d --build时自动生成)