> 公司内部前端组件或库的共享等,搭建一个npm
私有库就很方便,现在中大型公司也基本都有自己的npm
私有库,这篇文章,和大家一起共同搭建一个npm
私有库,共同学习
前置条件
- 一台电脑
- 可以联网
一、安装docker
使用的windows版本的 docker Desktop
, 可以直接去 docker Desktop 官方网站去下载,下载完成后正常安装就可以了。
或者使用 winget
安装
winget install Docker.DockerDesktop
linux 下的安装
直接使用各个发行版对应的 pkg manangment 安装,由于本人最熟悉ubuntu,下面给出ubuntu下的安装命令
#Ubuntu
apt install docker
apt install docker-compose // 如需要使用docker-compose可以使用此命令安装
二、基于 Docker 安装 Verdaccio
1、创建相关的目录
mkdir /opt/Docer-container/verdaccio
cd /opt/Docer-container/verdaccio
mkdir conf && mkdir storage && mkdir plugins
cd ./storage && mkdir data && touch htpasswd
cd ../conf touch config.yaml
vim config.yaml
2、创建配置文件
# 存放软件所有软件包的目录
storage: /verdaccio/storage/data
# 存放所有插件的目录
plugins: /verdaccio/plugins
web:
# 网站Title
title: Verdaccio
# 禁用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/storage/htpasswd
# 最大注册用户数,默认为 "+inf".
# 可用通过设置为-1禁止注册
# max_users: 1000
# 上游npm库,可以设置多个
uplinks:
npmjs:
url: https://registry.npmjs.org/
taobao:
url: https://registry.npmmirror.com/
packages:
# 作用域包
'@*/*':
# 允许所有人访问
access: $all
# 注册用户可访问
publish: $authenticated
# 注册用户可访问
unpublish: $authenticated
proxy: npmjs
'**':
# 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包
# 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd)
# 访问权限有三个关键词: "$all", "$anonymous", "$authenticated"
# $all 表示不限制,任何人可访问;
# $anonymous 表示未注册用户可访问;
# $authenticated 表示只有注册用户可访问
access: $all
# 允许所有注册用户发布/撤销已发布的软件包
# (注意:默认情况下任何人都可以注册)
publish: $authenticated
unpublish: $authenticated
# 如果私有包服务不可用在本地,则会代理请求到'npmjs'
# proxy 可以有多个值,多个值用空格分开
proxy: taobao npmjs
# 您可以指定传入连接的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:4873
3、安装运行 Verdaccio
docker run -it --name verdaccio \
-p 4873:4873 \
-v /opt/Docker-container/Verdanccio/conf:/verdaccio/conf \
-v /opt/Docker-container/Verdanccio/storage:/verdaccio/storage \
-v /opt/Docker-container/Verdanccio/plugins:/verdaccio/plugins \
verdaccio/verdaccio
> 运行成功后就可以通过http://服务器ip:4873
访问npm
私有库了。
报错处理:
如果提示 fatal--- cannot open config file /verdaccio/conf/config.yaml: Error: CONFIG: it does not look like a valid config file
, 可以执行下面的命令
chcon -Rt container_file_t ./conf
更多解决方法请查看官方文档
三、管理 npn、yarn、pnpm 源
1、替换 npn、yarn、pnpm 源为 http://192.168.188.164:4873/
#npm和pnpm 设置(pnpm使用npm配置的源)
npm config set registry http://192.168.188.164:4873/
# yarn 设置
yarn config set registry http://192.168.188.164:4873/ #-g是全局设置
直接把默认的npm
源替换为我们私有库,但是多个源的时候不太好管理。所以推荐使用nrm
来管理我们的npm
源。
2、使用 nrm
管理 npm
源
# 全局安装nrm
$ npm i -g nrm
# 添加私有库
$ nrm add vnpm http://192.168.188.164:4873
# 查看现有的npm源
$ nrm ls
npm ---------- https://registry.npmjs.org/
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
private ------ http://192.168.188.164:10086/repository/npm/
* vnpm --------- http://192.168.188.164:4873/
# 设置npm源
$ nrm use vnpm
> 管理 yarn
的源,可以使用 yrm
来管理;用法同 nrm
四、注册用户和发布npm包
1、注册私有库用户
# 注册用户
$ npm adduser
复制代码
2、登陆私有库用户
# 登录用户
$ npm login
# 查看当前登录用户
$ npm who am i
复制代码
3、在私有库发布包
# 发布当前包
$ npm publish
> 到此,所有的安装,注册用户,发布包流程都已经完成了,各位小伙伴如果有什么问题可以私聊/留言。