verdaccio || docker一键构建企业级私有 npm 库

757 阅读2分钟

verdaccio || docker构建私有化npm仓库

公司内部部署npm私有库,这样会方便管理私有化npm仓库,目的主要还是出于安全考虑 私有化npm仓库,是局域网内才能安装,基本公司都会提供公司vpn,这样我们就可以居家办公了

前言

私有 npm 库,我想是每个团队都会实践和经历的一个阶段。实现私有 npm 的方式有很多种,例如基于私有 Git 仓库、基于 npm 官方提供的私有功能(付费)、Verdaccio 等等。但是,综合比较各种因素下来(不要钱、还好用),Verdaccio 都略胜前面两者。

一.前期准备

  1. node环境安装(node安装会自带npm,建议node版本不要低于8)
  2. nrm源管理器(安装源管理工具npm i -g nrm)
  3. verdaccio构建私有化npm的重要工具(安装Verdaccio:npm i -g verdaccio)

二.verdaccio安装,启动

  1. 全局安装verdaccio
npm i -g verdaccio
  1. 创建config.yaml文件,复制这些配置
# storage 已发布的包的存储位置
storage: ./storage
# plugins 插件所在的目录
plugins: ./plugins
# web 界面相关的配置
web:
  title: Verdaccio
# auth 用户相关,例如注册、鉴权插件(默认使用的是 `htpasswd`)
auth:
  htpasswd:
    file: ./htpasswd
# uplinks 用于提供对外部包的访问,例如访问 npm、cnpm 对应的源
uplinks:
  npmjs:
    url: https://registry.npm.taobao.org
# packages 用于配置发布包、删除包、查看包的权限
# access 控制包的访问权限 
# publish 控制包的发布权限
# unpublish 控制包的删除权限
# `$all`(所有人)、`$anonymous`(未注册用户)、`$authenticated`(注册用户)
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs
  '**':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs
# server 私有库服务端相关的配置
server:
  keepAliveTimeout: 60
# middlewares 中间件相关配置,默认会引入 `auit` 中间件,来支持 `npm audit` 命令
middlewares:
  audit:
    enabled: true
# Verdaccio 是支持搜索功能的,它是由 `search` 控制的,默认为 `false`,所以这里我们需要开启它
search: true
# logs 终端输出的信息的配置
logs:
  - { type: stdout, format: pretty, level: http }
# listen 设置自己的端口号
listen:
  - 0.0.0.0:4873
  1. 在终端中输入 verdaccio 命令启动 Verdaccio
verdaccio

终端会出现

image.png 此时就可以访问localhost:4873,就表示构建成功了

image.png

三.发布一个属于自己包

  1. 首先需要注册一个npm账号

image.png 2. 想发布到本地的npm仓库中,就需要切换npm源

// 安装nrm管理源工具
npm i -g nrm

// 添加本地npm源
npm add localhost http://localhost:4873

// 查看源列表
nrm ls

// 切换源
nrm use localhost

只要看到这个*,就表示切换成功了 image.png 3. 发布属于自己的包,到npm私库中

// 登录刚刚注册的npm账号
npm login

// 出现
// Username(用户名) 
// Password(密码)
// Email: (填写自己的邮箱,第一次登录会给你的邮箱发一个一次密码,登录邮箱查看填写就可以)

// 发布
npm publish

出现这样就表示发布成功了 image.png

image.png

四.Docker+Verdaccio搭建npm仓库

  1. linux服务器下载快速安装docker
curl -fsSL get.docker.com -o get-docker.sh
  1. 下载完成后,可以ls命令查看一下。已经存在的话,使用sh命令执行这个脚本
sh get-docker.sh
  1. 启动docker
systemctl start docker
  1. docker启动verdaccio
// 文件目录
--- home
    --- verdaccio
        --- conf
            --- config.yaml
        --- storage
        --- plugins
    
// docker启动
V_PATH=/home/verdaccio; docker run -d -it --name verdaccio -p 4873:4873 \
-v $V_PATH/conf:/verdaccio/conf -v $V_PATH/storage:/verdaccio/storage \ 
-v $V_PATH/plugins:/verdaccio/plugins verdaccio/verdaccio


  1. 查看服务 docker ps

image.png 这就就表示成功了

这样部署在公司本机服务器上,公司内部就可以直接访问了

点赞 👍

通过阅读本篇文章,如果有收获的话,可以点个赞,这将会成为我持续分享的动力,感谢~