git+ssh
的方式,感受不够优雅,而且还想能够配置相应的权限Verdaccio 是一个 Node.js建立的轻量的私有 npm proxy registry, forked 于 sinopia@1.4.0
。nginx
Nodegit
Node >= v6.12
Node >= v8.x
npm >=4.x 或者 yarnweb
官方强烈推荐包管理器版本
> npm@5.x | yarn@1.x | pnpm@2.x
npm
web 应用支持浏览器 Chrome, Firefox, Edge 和 IE11以上
浏览器
npm
全局安装缓存
npm install -g verdaccio
复制代码
或者使用 yarn
服务器
yarn global add verdaccio
复制代码
安装好后须要命令行执行网络
$> verdaccio
warn --- config file - /home/.config/verdaccio/config.yaml
warn --- http address - http://localhost:4873/ - verdaccio/3.0.0
复制代码
而后打开浏览器 访问地址 http://localhost:4873/ 正常显示即成功, 4873是默认端口。 另外建议安装 nrm
方便管理 npm 源。ssh
npm i -g nrm
复制代码
安装好后工具
nrm add verdaccio http://localhost:4873/ # 添加源
nrm use verdaccio # 更换源
复制代码
而后就是添加用户,登陆就能够发布、安装了。
在当前用户的 .config/verdaccio
下默认有两个文件:config.yaml
和 htpasswd
。这里介绍两个比较重要的配置项,其余的能够官网上查询。
通常团队或者公司的私有项目,会采用不一样的权限控制。
操做权限:
access
表示哪一类用户能够对匹配的项目进行安装(install)publish
表示哪一类用户能够对匹配的项目进行发布(publish)proxy
如其名,这里的值是对应于 uplinks 的组权限:
$all
表示全部人均可以执行对应的操做$authenticated
表示只有经过验证的人能够执行对应操做$anonymous
表示只有匿名者能够进行对应操做(一般无用)了解这几项配置后就能很简单地使用 verdaccio 的权限控制了
packages:
# scoped 包
'@scope/*':
access: $all
publish: $all
proxy: server2
'supersecret-*':
# 添加多个组
access: secret super-secret-area ultra-secret-area
publish: secret ultra-secret-area
proxy: server1
'private-*':
# private-xxx 容许全部的用户安装、认证的用户发布
access: $all
publish: $authenticated
proxy: uplink1
'old-*': # 不设置 `access`、`publish` 阻止对一组包的访问(不设置proxy阻止代理一组特定包)
'**':
# 容许全部用户 (包括为验证的用户) 安装和发布
access: $all
publish: $all
proxy: uplink2
复制代码
由于是私有源,咱们能够设置 config.yaml
中的 max_users: -1
来禁用 npm adduser 命令来建立用户。若是须要添加用户这里介绍两种方法:
能够经过安装 htpasswd-for-sinopia 来添加帐号
$ npm install htpasswd-for-sinopia -g
$ sinopia-adduser # 在 htpasswd 目录下执行
复制代码
而后就是根据提示填写帐号密码就行。
verdaccio 的认证是基于 verdaccio-htpasswd, 能够经过官方提供的工具来生成 www.htaccesstools.com/htpasswd-ge…,将生成的段字符串添加到 htpasswd
中便可。
可使用forever、pm2或其余的守护进程进行管理。
$ npm i -g pm2 # 安装
$ pm2 start `which sinopia` #启动
复制代码
nginx 配置:
server {
listen 80 default_server;
location / {
proxy_pass http://127.0.0.1:4873/;
proxy_set_header Host $host;
}
}
复制代码