服务器:CentOS Linux release 7.6.1810 (Core) +
docker 19.03.8+
Verdaccio: 一个轻量级的Node.js私有代理注册表
官网:https://verdaccio.org/
安装:
docker pull verdaccio/verdaccio
-warehouse
-docker-compose.yml #docker-compose 配置文件
-plugins
-config
-config.yaml #verdaccio 配置文件
-storage
设置全部文件夹下面文件权限:可读可写
chmod -R 777 xxx/warehouse
chmod -R 777 xxx/warehouse/plugins
chmod -R 777 xxx/warehouse/config
chmod -R 777 xxx/warehouse/config/config.yaml
chmod -R 777 xxx/warehouse/storage
version: '3.4'
services:
verdaccio:
image: verdaccio/verdaccio
container_name: "verdaccio"
networks:
- node-network
environment:
# VERDACCIO 服务端口
- VERDACCIO_PORT=3005
# 当前登录 linux 服务器的用户名
- VERDACCIO_USER_NAME="root"
ports:
# 宿主和容器的端口
- "3005:3005"
volumes:
- "./storage:/verdaccio/storage"
- "./config:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
networks:
node-network:
driver: bridge
对应文件 warehouse/docker-compose.yml
上面配置需要注意:VERDACCIO_USER_NAME
。 如果未配置或者配置错误,在后面的操作中可能会报错。
文件 warehouse/config/config.yaml
storage: /verdaccio/storage
web:
# 网站Title
title: 私有NPM服务
# 禁用Gravatar头像
# gravatar: false
# 排序方式 asc|desc
# sort_packages: asc
# 是否启用暗黑模式
# darkMode: true
# logo地址
# logo: http://somedomain/somelogo.png
# favicon地址
# favicon: http://somedomain/favicon.ico | /path/favicon.ico
# i18n翻译配置
# i18n:
# 可用列表见:https://github.com/verdaccio/ui/tree/master/i18n/translations
# web: en-US
auth:
htpasswd:
file: /verdaccio/conf/htpasswd
# 上游npm库,这里可用设置为淘宝
uplinks:
npmjs:
url: https://registry.npmjs.org/
server2:
url: https://registry.npmmirror.com/
server3:
url: https://mirrors.cloud.tencent.com/npm/
packages:
'@*/*':
# 允许所有人访问
access: $all
# 注册用户可访问
publish: $authenticated
# 注册用户可访问
unpublish: $authenticated
proxy: npmjs server2 server3
'**':
# 这里如果不设置在使用 npm i xxx、 npm publish 时将会提示包不存在,为了方便这里直接设置上如下两行
# 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包
# 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd)
# 访问权限有三个关键词: "$all", "$anonymous", "$authenticated"
# $all 表示不限制,任何人可访问;
# $anonymous 表示未注册用户可访问;
# $authenticated 表示只有注册用户可访问
access: $all
publish: $authenticated
unpublish: $authenticated
# 如果私有包服务不可用在本地,则会代理请求到'npmjs'
proxy: npmjs server2 server3
# 您可以指定传入连接的HTTP /1.1服务器保持活动超时(以秒为单位)。
# 值为0会使http服务器的行为类似于8.0.0之前的Node.js版本,后者没有保持活动超时。
# 解决方法:通过给定的配置可以解决以下问题
server:
keepAliveTimeout: 60
# 中间件
middlewares:
audit:
enabled: true
# 日志设置
logs:
- {type: stdout, format: pretty, level: http}
# 开放远程访问,允许所有IP
listen:
# 这个端口务必对应上
- 0.0.0.0:3005
执行下面命令即可
docker-compose up -d --build
在浏览器打开 服务器网址:端口(3005)
即可
安装nrm
npm i -g nrm
添加代理
nrm add verdaccio <你的服务器地址:3005>
切换到添加的代理(使用代理源)
nrm use verdaccio
查看当前npm 源
npm get registry
其他
1、设置其他源如腾讯源、阿里源
npm config set registry http://registry.npm.taobao.org
npm config set registry https://registry.npmmirror.com/
2、npm设置官方源:
npm config set registry http://www.npmjs.org
3、查看现有的npm源
nrm ls
npm adduser --registry <你的服务器地址:3005>
接着,它会要求你填写用户名、密码和邮箱,用于登陆私有 npm 库
# 登录用户
$ npm login
# 查看当前登录用户
$ npm who am i
# 发布当前包
$ npm publish