Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Verdaccio私仓搭建的一些注意点和姿势

Verdaccio私仓搭建的一些注意点和姿势

作者头像
CRPER
发布于 2020-06-19 09:10:55
发布于 2020-06-19 09:10:55
5.8K20
代码可运行
举报
文章被收录于专栏:CRPER折腾记CRPER折腾记
运行总次数:0
代码可运行

verdaccio是什么?

官网: www.verdaccio.org/ A lightweight private npm proxy registry

一个轻量级的npm中心代理仓库!采用node实现的

简单点说,就是npm私有部署仓库,类似npm官方付费的私有仓.

搞的动机

为什么会搞这个? 是想把我们公司的npm私有仓从nexus迁移出来.

我们目前和后端共用nexus,因为nexus也能管理maven这些!

npm私有仓库独立出来,后续好推向整个公司!!

我们这里采用docker自己部署(用的是v4.6.x),方便后续滚动更新.

配置文件及模块缓存目录是从外部映射进去,维护比较弹性

外网访问是通过nginx代理,内网集群是通过安全组策略授权.

注意: 非采用官方docker镜像.

效果图

总体来说对前端人员比较友好,很多信息很直观. 包括依赖,发布仓库,代码反馈,node版本等等

注意点及姿势

verdaccio配置主要集中在一个配置文件, config.yaml

基础配置(默认语言,logo替换,排序)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
web:
  # WebUI is enabled as default, if you want disable it, just uncomment this line
  enable: true
  title: #网站首页进入的正文标题
  logo: #这里可以给定一个远程连接的图片,注释掉就采用默认的
  # comment out to disable gravatar support
  gravatar: true
  # by default packages are ordercer ascendant (asc|desc)
  # sort_packages: asc  # 包的排序
  # darkMode: true # 黑暗模式
  # scope: "@scope"

# translate your registry, api i18n not available yet
i18n:
# list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
  web: zh-CN # 默认是en-US,我们改为默认中文,这个东东支持多语言

账号机制及授权

我们是公司内部使用,所以走ldap是必然的.

verdaccio支持插件机制,这里我们用了这个插件:

verdaccio-ldap : 这个插件基本满足账号的打通!

授权机制也是通过ldap插件给定某个组,

对应的资源发包和撤回权限采用授权组即可.

当然也可以特定到某个用户!如图

上游链的配置

因为我们目前有两个集群,不可能搭了这个东东,就放弃之前的.

那之前的私有仓资源如何可以通过这个私有仓访问,

外网社区的npm资源如何接入呢?主要配置uplinks来实现.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
    timeout: 10s
  yarn:
    url: https://registry.yarnpkg.com/
    timeout: 10s
  taobao:
    url: https://registry.npm.taobao.org/
    timeout: 10s

Verdaccio Uplinks 文档

包安装索引资源顺序

我们通过这个仓库安装资源有顺序的,是依次之上往下检索!!

值得一提的是: proxy没必要同时代理多个公网的源,会非常慢!!!!因为会轮询去找资源!!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
packages:
  '@h3/*': # 若是@h3开头的包优先检索
    access: $all #谁可以访问
    publish: linqh jira # 谁可以发布(可以授权个人用户或者组,比如我们这里是我还有我们jira的所有用户)
    unpublish: linqh # 谁可以撤包!!就会把包从私有仓下架!!!而非npm那样只打deprecated标记位
    proxy: nexus-yunshu # 这里就是关联上游链了,uplinks,支持多个上游链


  '**': # 最终索引的地方,是不是很像路由的概念,
    # 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: $all

    # allow all known users to publish/publish packagesnonymous
    # (anyone can register by default, remember?)
    publish: $authenticated
    unpublish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: taobao  nexus-yunshu # 公网包我们优先从淘宝镜像源上拉取,之后查询我们nexus之前的私有包
                                                       

Verdaccio 包访问文档

效果图字段展示

主要是读取package.json的标准字段来实现的,

代码的部分数据做了脱敏!!!!我自己的名字就无所谓了~~

json里面加了些注释,可以瞅瞅

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "test-ci",
  "version": "0.5.0",
  "description":"这只是一个测试发包的例子,包括用来测试ci/cd的,请勿下载使用!!!", # 包描述
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "jk2dt": "jk2dt"
  },
  "keywords": [ # 给别人检索的关键字
    "test",
    "test-verdaccio",
    "ci",
    "ci/cd",
    "demo",
    "example"
  ],
  "author": "linqunhe", # 作者
  "contributors": [ # 贡献者
    {
      "name": "xxx",
      "email": "xxxm"
    },
    {
      "name": "xx2",
      "email": "xx2@xxx.com"
    },
    {
      "name": "xx3",
      "email": "xx@xx.com"
    }
  ],
  "dependencies": { # 核心依赖
    "core-js": "^3.6.5",
    "vue": "^2.6.11"
  },
  "devDependencies": { # 开发依赖
    "@h3/jenkins-2-dingtalk": "^1.7.10",
    "@vue/cli-plugin-babel": "~4.4.0",
    "@vue/cli-plugin-eslint": "~4.4.0",
    "@vue/cli-service": "~4.4.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2",
    "vue-template-compiler": "^2.6.11"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ],
  "peerDependencies": { # 引用的关联依赖,不会强制安装,缺失会警告
    "@h3/antd-vue": ">=1.4.10",
    "lodash": ">=4.17.15",
    "vue": ">=2.6.11",
    "vue-template-compiler": ">=2.6.11"
  },
  "bugs": { # 对应code  repo的issue
    "url": "httxxxxk/issues",
    "email":"cxxx"
  },
  "engines": { # 可以告知该报依赖什么node版本乃至什么版本的npm
    "node": ">= 12.0.0",
    "npm" : "^6.0.0"
  },
  "repository": { # code repo
    "type": "git",
    "url": "httpxxxx-hook.git"
  },
  "publishConfig": { # 指定发布域,就是指向私有仓
    "registry": "http://xxx"
  },
  "homepage": "httxxxxdy/test-ci-hook#readme", 
  "license": "MIT"
}

项目资源安装服务端错误500

比如: error: internal erver error

请依次排除以下三点

  • 代理的上游链互相引用,请保持单一!
  • 本地缓存异常
    • 安装区域先清空缓存 npm cache clear -f 再安装
  • 终极大法(慎用)
    • 清空verdaccio的模块缓存目录,这样所有依赖会重新梳理(已经发布的私有包注意备份)

包发布推送到钉钉群

Verdaccio Notifications文档

Verdaccio支持webhook方式推送发包信息(在npm publish的时候触发)

参数

类型

必填

支持

默认值

描述

method

string

No

all

请求方法post还是...

packagePattern

string

No

all

匹配在哪些包发布的时候触发消息推送钩子

packagePatternFlags

string

No

all

js 正则标志位,如i忽略大小写

headers

array/object

Yes

all

http headers,不用多说

endpoint

string

Yes

all

webhook发送端点

content

string

Yes

all

可以出粗暴的理解为http的body,支持 Handlebar 表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 注意缩进
notify:
  'test-dingtalk':
     method: POST
     headers: [{'Content-Type': 'application/json;charset=utf-8'}]
     endpoint: https://oapi.dingtalk.com/robot/send?access_token=xx1e1
     content: '{ "msgtype": "text","at": { "isAtAll": false }, "text": {"content":"New package published: `{{ name }}{{#each versions}} v{{version}}{{/each}}`"}}'


复制代码

比如钉钉支持的几种格式,你只要拼凑对应的格式就能正常推送!!

总结

有不对之处请留言,会及时修正,谢谢阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年06月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
通过uplinks配置上游链接npmjs yarn taobao等,如果一个包,比如paakageA,在我们的私有仓库中没有,而是在yarn或taobao仓库中,如果我们在客户端配置了我们自己搭建的npm私有镜像站,这个时候客户端是需要连接外网才能下载到这个packageA吗?或者是我们的npm私有镜像会将packageA下载到服务器端,然后客户端就可以安装这个包吗?
通过uplinks配置上游链接npmjs yarn taobao等,如果一个包,比如paakageA,在我们的私有仓库中没有,而是在yarn或taobao仓库中,如果我们在客户端配置了我们自己搭建的npm私有镜像站,这个时候客户端是需要连接外网才能下载到这个packageA吗?或者是我们的npm私有镜像会将packageA下载到服务器端,然后客户端就可以安装这个包吗?
回复回复点赞举报
老哥 配置里写中文推送乱码 这个问题你是怎么解决的啊
老哥 配置里写中文推送乱码 这个问题你是怎么解决的啊
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
史上最贴心NPM私服搭建辅导
•微信公众号 《JavaScript全栈》•掘金 《合一大师》•Bilibili 《合一大师》•verdaccio[1]
合一大师
2020/07/20
2K0
史上最贴心NPM私服搭建辅导
搭建npm私有仓库——verdaccio
Verdaccio 是一个简单的、零配置要求的本地私有 npm 注册表。无需整个数据库即可开始!Verdaccio 开箱即用,带有自己的小型数据库,并且能够代理其他注册表(例如 npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的人,Verdaccio 支持各种社区制作的插件,以连接到服务,例如 Amazon 的 s3、Google Cloud Storage或创建您自己的插件
Karl Du
2023/10/20
1.1K0
搭建npm私有仓库——verdaccio
使用开源软件搭建轻量的 NPM 私有仓库:Verdaccio
本篇内容,我们来聊聊使用开源软件 Verdaccio 搭建轻量的 NPM 私有仓库。
soulteary
2024/12/05
3280
使用开源软件搭建轻量的 NPM 私有仓库:Verdaccio
前端-团队效率(四)私有npm仓库
当前服务是已经启动了,想要整个项目部署团队使用还要一些配置,下面让我们进入配置文件
吴文周
2020/01/17
2.3K0
前端-团队效率(四)私有npm仓库
使用Docker搭建Npm私服Verdaccio
搭建npm私服可以选用多个软件,博主选用verdaccio搭建,什么是Verdaccio呢?官方解释:Verdaccio 是一个 Node.js创建的轻量的私有npm proxy registry。简单来说,我们设计的组件库有隐私性,不方便上传npm,我们就可以部署一个Npm私有服务。
can4hou6joeng4
2023/11/29
5920
私有化轻量级持续集成部署方案--07-私有NPM仓库-Verdaccio
提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记
莫问今朝
2022/03/08
1.6K0
私有化轻量级持续集成部署方案--07-私有NPM仓库-Verdaccio
Verdaccio 使用 Docker 安装及迁移教程
Verdaccio 是一个 npm 私有源,代码在 GitHub 开源,公司由于业务需要使用也有一段时间,非常稳定,社区也很活跃。入门可以看我之前写的一篇文章:
savokiss
2019/11/06
4K3
云原生大前端之使用 Helm 部署 Verdaccio,在 Kubernetes 上运行私有 NPM Registry
Verdaccio 是一个简单的,零配置所需的本地私有 npm registry。无需整个数据库就可以开始!Verdaccio 开箱即用,有其自己的小型数据库, 并具有代理其他注册中心的功能(例如:npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的用户,Verdaccio 支持各种社区制造的插件以挂接到 Amazon’s s3, Google Cloud Storage 等服务或创建自己的插件。
为少
2021/05/27
1.7K0
云原生大前端之使用 Helm 部署 Verdaccio,在 Kubernetes 上运行私有 NPM Registry
Vue.js 通过举一反三建立企业级组件库
不同的单页面应用中的标签存在大幅度的重复,这个时候我们会很快想到使用组件,但用法各式各样,逻辑混乱复杂。这个时候会立即想到解耦?解耦完后如何在公司内部建立组件库供其他人使用?
问问计算机
2021/05/08
2.4K0
Vue.js 通过举一反三建立企业级组件库
使用Sinopia搭建私有npm仓库
在用npm装包的时候,每次都要下载一大堆,慢且不说,npm还老被墙,所以就想到在公司内部搭建npm仓库镜像。大概看了几个,觉得Sinopia最简单也好用,所以就使用Sinopia搭建仓库吧。 安装 sudo npm install -g sinopia 配置与运行 安装完成后,暂时不知道配置文件在哪里,可以先运行一下 sinopia,比如: $ sinopia warn --- config file - /home/<user>/.config/sinopia/config.yaml warn
kongxx
2018/05/14
1.1K0
搭建npm私服
(原文参考:https://segmentfault.com/a/1190000005790827)
用户1437675
2018/08/20
2K0
手把手教你搭建私有化npm
Verdaccio是sinopia开源框架的一个fork,由于sinopia作者两年前就已经停止更新,坑比较多,因此Verdaccio是目前最好的选择
空白诗
2024/06/14
2920
手把手教你搭建私有化npm
基于 lerna 的多包 JavaScript 项目搭建维护笔记
将大型代码仓库分割成多个独立版本化的 软件包(package)对于代码共享来说非常有用。但是,如果某些更改 跨越了多个代码仓库的话将变得很 麻烦 并且难以跟踪,并且, 跨越多个代码仓库的测试将迅速变得非常复杂。
用户1250838
2021/07/30
8000
前端包管理工具与配置项
任何一个项目的构建离不开工具和统一的管理标准,在项目开发和维护过程中,我们需要了解安装包的相应工具和配置文件,以此来有效的进行项目的迭代和版本的更新,为项目提供基本的运行环境。
程序员海军
2023/11/07
5700
Sinopia安装部署
1.环境准备 Centos7 安装nodejs 以下是百度网盘下载资源 提取码 6666 node-v12.18.3-linux-x64.tar.xz 解压 tar -xvf node-v12.18.3-linux-x64.tar.xz -C /usr/local/ 配置环境变量 vim /etc/profile export NODE_HOME=/usr/local/node-v12.18.3-linux-x64 export PATH=$PATH:$NODE_HOME/bin source /e
夹胡碰
2020/08/14
8620
Sinopia安装部署
vue[0x01] -- Hello World
如果你看过一千部以上的电影,你就会发现,这世间根本没有什么离奇的事。为什么从后端或者说网页三剑客过来的哥们,会有觉得vue上手快,容易学的错觉?很大程度上,在早期的vue中,还是以脚本文件的形式通过script标签引入vue,而稍微懂点编程的应该也都接触过像jQuery之类的类库,可以说你是天然会,创建一个实例也很好理解,你会发现印象比较深刻的例子就是我在一个文本框输入数据楼下的显示文本也跟着变化了,数据与视图巧妙结合。前后端通过JSON进行数据交互,Ajax技术进行通信,硬憋一下也还行。那么,为啥又难了呢?前端技术发展太快了,前阵子在v站上看到一个帖说后端看不懂前端(这个笔者在目前所在公司真的有很深很深很深很深深深深的感受,也让我明白了做职业规划的重要性),其实,你找个前端过来也不一定能完全看得懂我个人认为,因为兴起的技术太特么多了,两只手怎么学的过来,若没有惊人的毅力。而且版本更新太快了,打开一个现代版的前端项目,配置文件就够你喝一壶,当然可能还有一些政治因素限制,僧多肉少的局面对源码也有一定的要求,导致难度曲线一下子就上去了,所以说比较难吧。生活不止眼前的苟且,还有你到不了的远方。加油吧,一点一点成长起来,同志们。
江涛学编程
2020/06/19
5410
vue[0x01] -- Hello World
NPM 私库从搭建到数据迁移最后容灾备份的一些解决方案
Verdaccio 是 Sinopia 开源框架的一个分支。它提供了自己的小数据库,以及代理其他注册中心的能力(例如:npmjs.org 网站),配置以及部署相对简单,一步到"胃"。如果公司的私包比较少的话或者你想偷懒,可以考虑一下。
政采云前端团队
2020/12/15
3.3K0
NPM 私库从搭建到数据迁移最后容灾备份的一些解决方案
魔改npm私有仓库 | Verdaccio教程
好久没分享前端技术了,今天推荐一个开源软件:Verdaccio,它是一个私有npm仓库。npm是一个基于http的协议,用来存放软件包并且维护版本和依赖,利用http提供的url路径、动词啥的来对软件包进行增删改查。所以Verdaccio这款软件的核心就是实现npm协议。
Jean
2020/07/23
2.5K1
魔改npm私有仓库 | Verdaccio教程
【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM
本来需要配置.npmignore配置文件,但是网上不建议用这种方式,说是黑名单的方式,不在黑名单里的关键信息都发上去了。 而是建议使用package.json里配置白名单的方式。于是将package.json配置如下: 关键配置处加上了备注信息:
xing.org1^
2020/11/24
9680
【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM
如何在gitlab上发布npm包
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。
前端柒八九
2024/02/29
6440
如何在gitlab上发布npm包
相关推荐
史上最贴心NPM私服搭建辅导
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验