Verdaccio 搭建私有 NPM

为何须要搭建私有 npm

  • 私有的包只想在内部使用,还不想用 git+ssh 的方式,感受不够优雅,而且还想能够配置相应的权限
  • npm 上的包下载很慢,想把已经下载过的包缓存在服务器上,下次 下载时首先检查更新,若是没更新直接走缓存
  • 但愿下载的时候,公共包走公共仓库,私有包走内部服务器的私有仓库

关于 Verdaccio

Verdaccio 是一个 Node.js建立的轻量的私有 npm proxy registry, forked 于 sinopia@1.4.0nginx

  • 与 yarn, npm 和 pnpm 100% 兼容
  • 提供 Docker 和 Kubernetes 支持,至关容易安装和使用
  • 发布的包是私有的而且访问权限可配置
  • Verdaccio 按须要缓存全部相关项,并在当地或私有网络下能够加速安装

安装

环境

  1. Nodegit

    • verdaccio@3.x Node >= v6.12
    • verdaccio@4.x Node >= v8.x
  2. npm >=4.x 或者 yarnweb

    官方强烈推荐包管理器版本 > npm@5.x | yarn@1.x | pnpm@2.xnpm

  3. 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.yamlhtpasswd。这里介绍两个比较重要的配置项,其余的能够官网上查询。

权限配置

通常团队或者公司的私有项目,会采用不一样的权限控制。

操做权限:

  • 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;
  }
}
复制代码

写在最后

  • 尽可能不要再使用 sinopia 了会有各类坑,具体能够本身实验。
  • 有问题能够在 stackoverflow 上提问,官方维护者很是友好,回复效率特别快。

原文连接

相关文章
相关标签/搜索