自己的前端组在开发react-native用到很多封装的包,私有仓库是很有必要的,之前使用过nexus的npm仓库。verdaccio相比界面化更亲近,配置相对来说也比较方便。
本文是用docker配置,如果直接配置的话非常简单这里就不说了
1.拉取verdaccio的docker镜像
docker pull verdaccio/verdaccio
2.在用户根目录下创建docker文件夹存放verdaccio配置文件
mkdir -p ~/docker
cd /data/demo
从git拉取示例demo并且cd到目录下
git clone https://github.com/verdaccio/docker-examples
cd docker-examples
移动配置文件到第一步创建的文件夹
mv docker-local-storage-volume ~/docker/verdaccio
给予文件夹权限
chown -R 100:101 ~/docker/verdaccio
启动镜像
docker run --name verdaccio -itd -v ~/docker/verdaccio:/verdaccio -p 4873:4873 verdaccio/verdaccio
这时候可以先查看服务地址加端口号4873,如下图这样就是运行成功了
3.修改配置文件
cd ~/docker/verdaccio/conf
vim conf.yaml
修改镜像源publish和install权限
uplinks:
npmjs:
url: http://registry.npm.taobao.org/ 淘宝镜像
packages:
'@jota/*':
access: $all
publish: $all
'@*/*':
# scoped packages
access: dreamfan
publish: dreamfan
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $authenticated 拉取权限,默认为$all,$authenticated是已注册用户
# allow all known users to publish packages
# (anyone can register by default, remember?)
publish: dreamfan publish权限,默认为$all,这里改为我配置的用户名
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
其他相关配置可以参考snopia的配置文件,几乎差不多
4.添加用户
注:这里因为内部使用,关闭了npm注册权限,直接注册两个账号控制publish权限,如果不需要做权限控制直接忽略这一步。
配置用户
cd ~/docker/verdaccio/conf
vim htpasswd
在注册用户文件中添加用户,用户名加密码的base64 encode
可以在(http://www.htaccesstools.com/htpasswd-generator/)这个网站中直接转换,将生产的一串码复制到htpasswd中
docker restart verdaccio
重启一下verdaccio生效配置
5.登录
这就已经配置完成了,之后可以使用nrm切换到你的镜像源
npm login登录配置过的账号密码即可
如果没有配置权限直接npm adduser就可以