使用verdaccio搭建npm私服仓库

为什么需要搭建私有 npm


-搭建公司内部中台做铺垫,代码属于公司资产
-团队内部使用一些待完善package半成品
-内部使用更安全
-下载package更快,权限可配置


包管理的私服工具选型

maven:更偏向后台使用
cnpm: 需要安装MySQL,配置比较麻烦
Verdaccio 是一个 Node.js创建的轻量的私有 npm proxy registry, forked 于 sinopia@1.4.0
1.与 yarn, npm 和 pnpm 100% 兼容
2.提供 Docker 和 Kubernetes 支持,相当容易安装和使用
3.发布的包是私有的并且访问权限可配置
4.Verdaccio 按需要缓存所有相关项,并在当地或私有网络下可以加速安装

服务器搭建


1.安装node
2.安装verdaccio
npm install -g verdaccio --unsafe-perm

加上--unsafe-perm选项是为了防止gyp ERR! permission denied权限问题报错

3.启动verdaccio
verdaccio

执行结果如下:

[root@webserver ~]# verdaccio
*** WARNING: Verdaccio doesn't need superuser privileges. Don't run it under root! ***
 warn --- config file  - /root/.config/verdaccio/config.yaml
 warn --- Verdaccio started
 warn --- Plugin successfully loaded: verdaccio-htpasswd
 warn --- Plugin successfully loaded: verdaccio-audit
 warn --- http address - http://localhost:4873/ - verdaccio/4.10.0

从控制台的输出,我们可以看到:
verdaccio的配置文件路径在/root/.config/verdaccio/config.yaml和默认访问地址http://localhost:4873/
在配置文件末尾增加listen: 0.0.0.0:4873保存

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873

查看修改配置文件

// 进入verdaccio目录
[root@webserver ~]# cd /root/.config/verdaccio/
[root@webserver verdaccio]# ls
config.yaml  storage
-- 查看该目录下的文件,该目录下默认有两个文件:config.yaml和storage,添加用户之后会自动创建htpasswd

// 查看配置文件
[root@webserver ~]# vim config.yaml

verdaccio默认配置

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs
  '**':
    proxy: npmjs
logs:
  - {type: stdout, format: pretty, level: http}

在配置文件config.yaml末尾加入代码:

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873
配置

在当前用户的 .config/verdaccio 下默认有两个文件:config.yaml 和 htpasswd。这里介绍两个比较重要的配置项,其他的可以官网上查询。

  • htpasswd
    这个文件需要创建了账号才会出现在当前目录
npm adduser --registry http://localhost:4873
Username: xxx
Password:
Email: (this IS public) xxx@xxx.com
Logged in as slweb on http://localhost:4873/. #看到这个代表成功了
[root@webserver verdaccio]# ls
config.yaml  htpasswd  storage
#这时就出现了htpasswd。然后修改vim config.yaml
[root@webserver verdaccio]# vim config.yaml
auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    # max_users: 1000
    max_users: -1  # 禁止注册

下面将使用插件注册

[root@webserver verdaccio]# sinopia-adduser
username:

注册成功

[root@webserver verdaccio]# cat htpasswd
slweb:xxxOkg:autocreated 2020-12-23T08:36:36.974Z
slweb:{SHA}xxxqUE=:autocreated 2020-12-23T08:37:50.637Z
  • url可以配置成淘宝镜像地址:https://registry.npmjs.org/
  • 权限配置(一般团队或者公司的私有项目,会采用不同的权限控制。)
    操作权限:
  • access 表示哪一类用户可以对匹配的项目进行安装(install)
  • publish 表示哪一类用户可以对匹配的项目进行发布(publish)
  • proxy 如其名,这里的值是对应于 uplinks 的
    组权限:
  • all 表示所有人都可以执行对应的操作
  • authenticated 表示只有通过验证的人可以执行对应操作
  • anonymous 表示只有匿名者可以进行对应操作(通常无用)
    例子:
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

设置权限账号(安装插件完成)

npm install htpasswd-for-sinopia -g
4.使用pm2启动verdaccio

安装pm2

npm install -g pm2 --unsafe-perm

使用pm2启动verdaccio,以保证进程一直处于打开状态

pm2 start verdaccio
5、访问搭建好的私有仓库

在浏览器中打开http://47.107.60.51:4873 链接

注意:在阿里云服务器添加安全组,开放 4873 端口号,如果没有添加该端口安全组则不能在浏览器正常访问http://47.107.60.51:4873

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容