前语
跟着公司的不断发展,公司内部项目前端架构不断的发展壮大, 为了优化前端架构、降低模块间耦合度、别离公共库, 构建npm私仓进行独立保护就显得分外重要。
本文介绍如何在 Windows 系统下装置 Docker ,布置本地前端私仓 Verdaccio,旨在了解私仓 verdaccio 的建立以及 Docker 的根本运用。本地私仓建立完结后也能够当作研讨前端工程化的工具,比方 npm 包发布、办理等。
环境准备
详细请看WSL装置根据自己实际情况挑选
- 启用适用于 Linux 的 Windows 子系统,办理员身份翻开 PowerShell,并履行以下指令
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- 履行以下指令启用虚拟机功用,然后重新发动计算机,以完结 WSL 装置并更新到 WSL 2
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 下载 适用于 x64 计算机的 WSL2 Linux 内核更新包并装置
- 将 WSL 2 设置为默许版别(非有必要,假如不成功能够疏忽)
wsl --set-default-version 2
- 经过 Microsoft Store 装置Ubuntu 18.04 on Windows,也能够在Microsoft Store挑选你偏好的 Linux 分发版。可能下载不下来,也能够挑选挑选一个版别直接下载
- 假如根据Microsoft Store的装置完结后发动 Ubuntu 报
服务尚未发动
,能够找个地方解压直接运转 .exe 文件
装置 Docker
下载适用于 Windows的 Docker 桌面装置即可,详细的请参考 在 Windows 上装置 Docker 桌面
Mac 用户看这篇在 Mac 上装置 Docker 桌面
装置完结后点击图标即可运转客户端,可履行以下指令后台运转一个容器
docker run -d -p 80:80 docker/getting-started
参数 | 说明 |
---|---|
-d | 以别离模式(在后台)运转容器。 |
-p 80:80 | 将主机的 80 端口映射到容器中的 80 端口 |
docker/getting-started | 指定要运用的镜像 |
Verdaccio
Verdaccio 是一个Node.js创建的轻量的私有npm proxy registry。
详细介绍请移步查看Verdaccio 文档
装置 Verdaccio
Verdaccio 能够运用 npm 装置运用,Node版别要12+,办法如下:
# npm装置 verdaccio
$ npm install -g verdaccio
# 发动 verdaccio
$ verdaccio or pm2 start verdaccio
Verdaccio 默许端口号是4873,运用浏览器拜访http://127.0.0.1:4873
,成功即可。
在 Docker 中运用 Verdaccio
# 装置 Verdaccio,:latest表示下载最新版镜像
$ docker pull verdaccio/verdaccio:latest
# 运转 verdaccio 容器
$ docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
同样运用浏览器拜访http://127.0.0.1:4873
,成功即可,成功页面如下:
此刻翻开Docker客户端,images列表里现已有 verdaccio/verdaccio 镜像,Containers 列表则会有发动好的 verdaccio 容器,也能够在客户端发动容器。
Verdaccio 装备
Verdaccio装备攻略
常用装备详解
# 包的保存路径
storage: /verdaccio/storage/data
# 插件保存路径
plugins: /verdaccio/plugins
# verdaccio网页装备,https://verdaccio.org/docs/webui
web:
title: 网页标题
# verdaccio默许是中文,能够装备为中文
i18n:
web: zh-CN
# 用户装备,
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# 允许用户注册数量。默许1000,设置-1时,禁用 npm adduser 注册,只能修正 file 文件增加用户,一般用来办理私仓权限的。
max_users:1000
# npm包对应源装备
uplinks:
npmjs:
url: https://registry.npmjs.org/
yarn:
url: https://registry.yarnpkg.com/
taobao:
url: https://registry.npm.taobao.org/
# 包的相关装备
packages:
# 匹配包名正则,默许有两个 */* 和 @*/*
'*/*':
# 拜访权限, 权限分为"$all"(所有用户), "$anonymous"(匿名用户), "$authenticated"(认证用户),指定 htpasswd 用户(多个用户用空格隔开)
access: $all
# 发布权限
publish: $authenticated
# 删去权限
unpublish: $authenticated
# 署理,当本地没有对应资源时,拜访署理地址拉取并缓存到本地
proxy: taobao
# 服务端相关的装备
server:
keepAliveTimeout: 60
# 中间件相关装备,默许有`auit`中间件以支撑`npm audit`指令
middlewares:
audit:
enabled: true
# log 装备
logs: { type: stdout, format: pretty, level: http }
# 通知, https://verdaccio.org/docs/configuration#notifications
# notify:
# method: POST
# headers: [{ "Content-Type": "application/json" }]
# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
修正了装备文件后,可运转以下指令使装备收效
verdaccio -c config.yml
用户办理
运用 npm adduser 指令注册新用户,根据提示输入用户名、暗码和邮箱即可
npm adduser --registry http://127.0.0.1:4873
当需要操控发布权限时,可能需要制止 npm adduser 指令注册新用户,由私仓办理者手动修正用户装备文件直接修正或新增用户,暗码能够经过 htpasswd 网站生成格局如下,多个每个用户一行
user_name1:{SHA}m8NFSdVl2VBbKH3gzSCsd74dPyw=
user_name2:{SHA}cizaB/pF+lQDdssrMoTEL/nA3Lc=
假如有 LDAP 需求能够运用 verdaccio-ldap 插件
宿主机目录映射
为了防止意外(容器内容无法找回),以及修正装备(新增用户等)的方便能够将容器内 Verdaccio 的工作目录映射到宿主机上
比方映射到 D盘的 /docker-data/verdaccio 目录下,先在D盘新建 /docker-data/verdaccio 文件夹,然后在verdaccio文件夹下新建如下文件夹(其他目录如有需要也能够装备):
- storage,这儿寄存npm包
- plugins,这儿寄存插件
- conf,预设 config.yaml 文件
- auth,预设用户 htpasswd 文件
然后运用以下指令
# 发动容器 verdaccio
docker run -it --name verdaccio -v /D/docker-data/verdaccio:/verdaccio -p 4873:4873 verdaccio/verdaccio:latest
# --rm 相当于在容器退出后,履行docker rm -v
docker run -it --rm --name verdaccio -v /D/docker-data/verdaccio:/verdaccio -p 4873:4873 verdaccio/verdaccio:latest
# 假如包和插件也需要映射的化需要增加映射目录
docker run -it --name verdaccio -v /D/docker-data/verdaccio:/verdaccio -v /D/docker-data/verdaccio/storage:/verdaccio/storage -v /D/docker-data/verdaccio/plugins:/verdaccio/plugins -p 4873:4873 verdaccio/verdaccio:latest
是否运用 –rm 根据需要挑选
此刻拜访 http://localhost:4873/
,页面显示如下
发布测试
- 新建一个test项目,初始化 package.json,新增一项 “lib”: “index.js”
- 设置 .npmrc 内容 registry=http://127.0.0.1:4873
- 运用 npm login ,运用预设的用户admin,邮箱随意填
- 履行 npm publish
刷新 http://localhost:4873/
页面能够看到 test 现已发布到私仓了
预设的 htpasswd
admin:{SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
test:{SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
预设了 admin 和 test 两个用户,暗码是加密后的 123456
预设的 config.yaml
storage: /verdaccio/storage
plugins: /verdaccio/plugins
web:
title: 私仓
auth:
htpasswd:
file: /verdaccio/auth/htpasswd
max_users: -1
uplinks:
cnpmjs:
url: http://registry.npm.taobao.org/
npmjs:
url: https://registry.npmjs.org/
packages:
"@*/*":
access: $all
publish: admin
unpublish: admin
proxy: cnpmjs
"**":
access: $all
publish: admin
unpublish: admin
proxy: cnpmjs
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
logs: { type: stdout, format: pretty, level: http }
i18n:
web: zh-CN
windows下域名装备
首先发动指令需要增加域名信息,一般来讲运用域名的话用80端口,所以发动指令改为如下,ip替换为你的即可
docker run --rm -it --name test --add-host=verdaccio.docker.com:ip -v /D/docker-data/verdaccio:/verdaccio -p 80:4873 verdaccio/verdaccio:latest
要在 C:\Windows\System32\drivers\etc
下hosts文件增加
127.0.0.1 verdaccio.docker.com
运转发动指令,网页输入 http://verdaccio.docker.com/
即可拜访成功