博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Verdaccio 搭建私有 NPM
阅读量:6868 次
发布时间:2019-06-26

本文共 2431 字,大约阅读时间需要 8 分钟。

为什么需要搭建私有 npm

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

关于 Verdaccio

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

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

安装

环境

  1. Node

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

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

  3. web 应用支持浏览器 Chrome, Firefox, Edge 和 IE11以上

命令行安装

npm 全局安装

npm install -g verdaccio复制代码

或者使用 yarn

yarn global add verdaccio复制代码

使用

安装好后需要命令行执行

$> verdaccio warn --- config file  - /home/.config/verdaccio/config.yamlwarn --- http address - http://localhost:4873/ - verdaccio/3.0.0复制代码

然后打开浏览器 访问地址 正常显示即成功, 4873是默认端口。 另外建议安装 nrm 方便管理 npm 源。

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 命令来创建用户。如果需要添加用户这里介绍两种方法:

  • 可以通过安装 来添加账号

    $ npm install htpasswd-for-sinopia -g$ sinopia-adduser # 在 htpasswd 目录下执行复制代码

    然后就是根据提示填写账号密码就行。

  • verdaccio 的认证是基于 , 可以通过官方提供的工具来生成 ,将生成的段字符串添加到 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 上提问,官方维护者非常友好,回复效率特别快。

转载于:https://juejin.im/post/5cc81991f265da036d79c8ca

你可能感兴趣的文章
.NET的URL怎么静态化
查看>>
day06:shell脚本介绍 | shell脚本结构 | 执行data命令用法 | shell脚本中变量
查看>>
Centos7:timedatectl命令
查看>>
LeetCode:Fizz Buzz - Fizz Buzz 游戏
查看>>
如何在Shell中判断一个变量是否为整数
查看>>
juqery验证中文
查看>>
Linux OS Service 'ntpd' (文档 ID 551704.1)
查看>>
Jquery Validate 使用手册
查看>>
课堂录制的FTP配置
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
常见算法的记录
查看>>
ssh 问题
查看>>
Android源代码下载编译
查看>>
nhmicro添加信审功能
查看>>
eclipse安装maven插件-解决requires ‘bundle org.slf4j.api
查看>>
在Centos 5.x或6.x上安装RHEL EPEL Repo
查看>>
TextField 使用与方法总结
查看>>
湿润的武汉,湿润的心;干燥的北京,干涸的心。
查看>>
Help Desk Meet Power Shell
查看>>