公司内部前端组件或库的共享等,搭建一个
npm
私有库就很方便,现在中大型公司也基本都有自己的npm
私有库,这篇文章,和大家一起共同搭建一个npm
私有库,共同学习~
大家需要一台服务器,npm
私有库要求的配置不高,1核2G即可,但是我们会把上传的包映射到服务器本地,推荐硬盘大些。
一、安装 Docker
linux
服务器使用curl
下载快速安装的shell
脚本
curl -fsSL get.docker.com -o get-docker.sh
下载完成后,可以ls
命令查看一下。已经存在的话,使用sh
命令执行这个脚本
sh get-docker.sh
注意如果不是root
用户,需要使用sudo su
获取超级管理员权限。
安装完成后启动一下Docker Server
systemctl start docker
使用docker version
命令能看到Client
和Server
就启动成功了。
二、基于 Docker 安装 Verdaccio
1. 配置文件准备
mkdir /home/verdaccio
cd /home/verdaccio
mkdir conf && mkdir storage && mkdir plugins
cd conf
touch htpasswd
vi config.yaml
上面的命令,每行都要依次执行下,然后在config.yaml
写入配置
# 存放软件所有软件包的目录
storage: ../storage
# 存放所有插件的目录
plugins: ../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: ./htpasswd
# 最大注册用户数,默认为 "+inf".
# 可用通过设置为-1禁止注册
# max_users: 1000
# 上游npm库,这里可用设置为淘宝
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
# 作用域包
'@*/*':
# 允许所有人访问
access: $all
# 注册用户可访问
publish: $authenticated
# 注册用户可访问
unpublish: $authenticated
proxy: npmjs
'**':
# 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包
# 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd)
# 访问权限有三个关键词: "$all", "$anonymous", "$authenticated"
# $all 表示不限制,任何人可访问;
# $anonymous 表示未注册用户可访问;
# $authenticated 表示只有注册用户可访问
access: $all
# 允许所有注册用户发布/撤销已发布的软件包
# (注意:默认情况下任何人都可以注册)
publish: $authenticated
unpublish: $authenticated
# 如果私有包服务不可用在本地,则会代理请求到'npmjs'
proxy: 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
2. 一键安装运行 verdaccio
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
运行成功后就可以通过http://服务器ip:4873
访问npm
私有库了。
3. 给软件包目录和用户记录文件目录授予权限
这一步必须要做,不然不能新增用户和上传软件包。
chown 10001:65533 /home/verdaccio/conf/htpasswd
chown 10001:65533 /home/verdaccio/storage
chown 10001:65533 /home/verdaccio/plugins
三、管理 npm 源、注册用户、发布包
1. npm 源替换为私有库源
$ npm config set registry http://127.0.0.1:4873
直接把默认的npm
源替换为我们私有库,但是多个源的时候不太好管理。所以推荐使用nrm
来管理我们的npm
源。
2. nrm 管理 npm 源
# 全局安装nrm
$ npm install -g nrm
# 添加私有库
$ nrm add verdaccio http://{服务器ip}:4873
# 查看现有的npm源
$ nrm ls
* npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
verdaccio -- http://{服务器ip}:4873/
# 设置npm源
$ nrm use verdaccio
3. 注册私有库用户
# 注册用户
$ npm adduser
4. 登陆私有库用户
# 登录用户
$ npm login
# 查看当前登录用户
$ npm who am i
5. 在私有库发布包
# 发布当前包
$ npm publish
到此,所有的安装,注册用户,发布包流程都已经完成了,各位小伙伴如果有什么问题可以私聊我,或者评论区留言哈。
最后推荐一下我的前端工程相关的其他文章
基于 Docker ( Gitlab、Gitlab Runner ) 搭建一整套自动化CI、CD流程,完成从代码提交到自动打包编译到自动部署运行