本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作。系统环境是 Linux。

verdaccio

verdaccio 是一个开源的轻量的私有 npm proxy registry (npm 代理资源库),安装使用都非常方便。

forked自 sinopia@1.4.0

安装

使用 npm / yarn 进行全局安装

  • Node.js v12+

  • npm 4.x+ 或yarn

  • 全局安装

    1. npm install -g verdaccio
    2. yarn global add verdaccio
  • 启动

    1. verdaccio
    2. 或者使用 pm2 start verdaccio

    使用浏览器访问web服务,端口号4873,http://0.0.0.0:4873,访问成功就可以了。

使用 docker 镜像安装

  • 安装 docker,略

  • docker 下安装 verdaccio 镜像

    使用如下命令即可:

    1. docker pull verdaccio/verdaccio

    安装镜像成功:

  • 运行 verdaccio,使用 docker 命令运行镜像,创建 verdaccio 容器

    1. // 名称verdaccio, 端口 4873
    2. docker run -it --name verdaccio -p 4873:4873 verdaccio/verdaccio

    启动容器成功:



    启动成功以后,实际上就可以在浏览器访问了,http://0.0.0.0:4873

    接下来先介绍几个操作容器的 docker 命令。

  • docker 操作容器的部分命令

    新建并启动:docker run CONTAINER

    启动停止的容器:docker start CONTAINER_ID

    查看容器:docker container ls (docker ps)

    停止容器:docker stop CONTAINER_ID

    删除容器:docker rm CONTAINER_ID

  • 映射本地目录

    首先,创建 /home/verdaccio 目录,以下在该目录下操作。

    其次,创建 conf 目录,并添加 verdaccioconfig.yaml 配置文件。

    接着处理映射目录,一般有以下两种方式:

    1. 直接映射本地目录,启动 verdaccio

      1. docker run -it --name verdaccio -p 4873:4873 -v /home/verdaccio/storage:/verdaccio/storage -v /home/verdaccio/conf:/verdaccio/conf -v /home/verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio

      -v:容器目录映射到本地目录

    2. 或者使用 docker-compose 启动

      添加 docker-compose.yml 文件,使用 docker-compose up 命令启动

      1. version: '3'
      2. services:
      3. verdaccio:
      4. image: verdaccio/verdaccio
      5. container_name: "verdaccio"
      6. network--mode: "bridge"
      7. environment:
      8. - VERDACCIO_PORT=4873
      9. ports:
      10. - "4873:4873"
      11. volumes:
      12. - "/home/verdaccio/storage:/verdaccio/storage"
      13. - "/home/verdaccio/conf:/verdaccio/conf"
      14. - "/home/verdaccio/plugins:/verdaccio/plugins"
      15. network_mode: "bridge"

    注意: 本地目录 /home/verdaccio/storage 需要设置权限,不然会因为权限问题而导致操作失败。

    1. chown -R 10001:65533 /home/verdaccio/storage

    本地目录映射成功后,会简化很多操作,比如:

    /home/verdaccio 目录下会创建 storage 目录,如果发布了包,则在此目录下的 data 中能找到对应的包文件夹,可以查看所有上传的npm包,此处也可以直接删除该包

    也会在 conf 映射到配置文件,方便我们需要时修改配置信息。

  • 拷贝 verdaccio 配置文件

    如果不想做本地目录映射,也可以使用如下命令,拷贝出 verdaccio 镜像的配置文件。

    docker cp:在容器和本地文件系统之间,拷贝文件或文件夹。

    1. docker cp verdaccio:/verdaccio/conf/config.yaml /home

私有库部署成功

verdaccio 安装启动成功后,就可以直接网络访问。

当页面出现下图所示,就表示私有库搭建成功,后续就可以进行私有包的发布下载。

发布一个包

有了私有库以后,就可以在其上发布 npm 包。

但初始化时需要先添加用户,设置用户名和密码等,然后就可以直接发包了。

  • 添加用户

    1. npm adduser --registry http://0.0.0.0:4873/

    输入用户名、密码和邮箱。

  • publish

    当需要把某个项目发布到私有库时,直接 publish

    1. npm publish --registry http://0.0.0.0:4873/

    发布成功后,刷新页面,就能看到最新发布的包。

install

在项目目录下增加 .npmrc 文件,指定仓库地址。

  1. registry=http://0.0.0.0:4873/

使用 npm install 包名,即可安装私有包了。

verdaccio 配置文件解读

常用配置如下:

  1. # 素有包的保存路径
  2. storage: /verdaccio/storage/data
  3. # 插件的保存路径
  4. plugins: /verdaccio/plugins
  5. # 通过web访问
  6. web:
  7. title: Verdaccio
  8. # 账号密码文件,初始不存在
  9. auth:
  10. htpasswd:
  11. file: /verdaccio/storage/htpasswd
  12. # max_users:1000
  13. # 默认1000,允许用户注册数量。为-1时,不能通过 npm adduser 注册,此时可以直接修改 file 文件添加用户。
  14. # 本地不存在时,读取仓库的地址
  15. uplinks:
  16. npmjs:
  17. url: https://registry.npmjs.org
  18. # 对包的访问操作权限,可以匹配某个具体项目,也可以通配
  19. # access 访问下载;publish 发布;unpublish 取消发布;
  20. # proxy 对应着uplinks名称,本地不存在,去unplinks里取
  21. # $all 表示所有人都可以执行该操作
  22. # $authenticated 已注册账户可操作
  23. # $anonymous 匿名用户可操作
  24. # 还可以明确指定 htpasswd 用户表中的用户,可以配置一个或多个。
  25. packages:
  26. '@*/*':
  27. access: $all
  28. publish: $authenticated
  29. unpublish: $authenticated
  30. proxy: npmjs
  31. '**':
  32. access: $all
  33. publish: $authenticated
  34. unpublish: $authenticated
  35. proxy: npmjs
  36. # 服务器相关
  37. sever:
  38. keepAliveTimeout: 60
  39. middlewares:
  40. audit:
  41. enabled: true
  42. # 日志设定
  43. logs: { type: stdout, format: pretty, level: http }

使用 docker + verdaccio 搭建npm私有仓库的更多相关文章

  1. 使用verdaccio 搭建npm私有仓库

    使用verdaccio 搭建npm私有仓库 1. 为什么要搭建私有的npm仓库?    随着公司的业务越来越复杂,项目迭代速度也越来越快,那么项目间的常用的业务代码共享变得非常之有必要.但是对于公司的 ...

  2. 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库

    本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...

  3. 使用verdaccio+docker搭建npm私有仓库以及使用

    公司内部前端组件或库的共享等,搭建一个npm私有库就很方便,现在中大型公司也基本都有自己的npm私有库,这篇文章,和大家一起共同搭建一个npm私有库,共同学习 前置条件 一台电脑 可以联网 一.安装d ...

  4. Docker基础-搭建本地私有仓库

    1.使用registry镜像创建私有仓库 安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境: docker run -d -p 5000:5000 regist ...

  5. npm私有仓库 配置verdaccio在docker环境

    前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...

  6. NPM 私有仓库的搭建

    NPM 私有仓库的搭建 为什么搭建私有仓库 balabala,当然是有需求的时候嘛 搭建流程 介绍和安装verdaccio 备注: 程序启动后,配置文件为/home/work/.config/verd ...

  7. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

  8. Docker容器之搭建本地私有仓库

    Docker容器之搭建本地私有仓库 本地私有仓库搭建的具体步骤 首先下载 registry 镜像 docker pull registry 在 daemon.json 文件中添加私有镜像仓库的地址并重 ...

  9. 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

随机推荐

  1. SpringBoot入门报错 Whitelabel Error Page的总结

    刚入门SpringBoot,编写helloControl类,去访问本地端口,无缘无故报了这个错误 Whitelabel Error Page 总结了下,目前我碰到的有三种会导致这种情况 1.当你的 S ...

  2. video 适配通屏展示、针对不同分辨率 禁止变形处理

    CSS object-fit 属性 object-fit: fill|contain|cover|scale-down|none|initial|inherit; 样式上 video{ height: ...

  3. HTML选择器的四种使用方法

    选择器<style> 为了让.html代码更加简洁,这里引入选择器style 本文总共介绍选择器的四种使用方式 一.选择器的四种形式 1.ID选择器 id表示身份,在页面元素中的id不允许 ...

  4. Linux文件系统与inode、Block笔记

    Linux文件系统与inode.Block笔记 在Linux下一切都是文件,无论是设备还是接口,亦或是网卡等均被抽象成了文件,并且有相关的内核代码进行调度.然而,在一切都是文件的前提下,最需要进行探讨 ...

  5. Min_25筛 学习小记

    前言 为什么叫学习小记呢?因为暂时除了模板题就没有做其他的东西了.(雾 这个东西折磨了我一整天,看得我身不如死,只好结合代码理解题解,差点死在机房.(话说半天综合半天竞赛真是害人不浅) 为了以后忘了再 ...

  6. js--typeof 和 instanceof 判断数据类型的区别及开发中的使用

    前言 日常的开发中,我们经常会遇到判断一个变量的数据类型或者该变量是否为空值的情况,你是如何去选择判断类型的操作符的?本文来总结记录一下我们开发人员必须掌握的关于 typeof 和 instanceo ...

  7. 设置elementUI的table组件滚动条位置

    1.设置table的ref为tableList 2.设置滚动至顶部 this.$refs.tableList.bodyWrapper.scrollTop =0; 3.设置滚动至底部 this.$ref ...

  8. Asp.Net 熟悉 Spring

    注:(为加强记忆,所以记录下来,对于有些地方为什么那样写,我也不太理解) 一.我们先创建个窗体应用程序Demos,事先熟悉它是这么实现的 第一步,先在项目的根目录下建一个library文件夹,目的是放 ...

  9. 在c中使用正则表达式

    今天学习编译原理的时候,用c写一个简易的文法识别器实验遇到了一个问题:要用正则表达式去识别正则文法里面的A->ω,A->Bω, 其中ω属于T的正闭包,也就是说我们对正则文法的产生式进行抽象 ...

  10. LCA-离线tarjan模板

    /* *算法引入: *树上两点的最近公共祖先; *对于有根树的两个结点u,v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u,v的祖先且x的深度尽可能大; *对于x来说,从u到v的路径一定 ...