使用 Verdaccio 私有化 npm 源指南

这篇具有很好参考价值的文章主要介绍了使用 Verdaccio 私有化 npm 源指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用 Verdaccio 私有化 npm 源指南,npm,前端,node.js

使用 Verdaccio 私有化 npm 源指南

  • 使用 Verdaccio 私有化 npm 源指南
    • 介绍
    • 什么是 Verdaccio
    • 为什么选择 Verdaccio
    • 部署 Verdaccio
      • Nodejs 部署
        • 全局
        • 局部
      • Docker 部署
      • 云服务商一键部署
    • 注册用户
    • 发布私有 npm 包
    • 管理 npm 包
    • 项目使用私有源
      • 全量切换
      • 部分切换
    • 结尾
    • 源代码链接

介绍

在日常的工作开发中,我们常常会遇到这样的场景:

公司或团队内部,需要开发和共享一些 逻辑/UI 组件等等的代码,

但是这些代码里面,可能包含一些敏感信息或专有功能,我们不想发布到公开的 npmjs 上去。

这时候我们就需要去搭建 npm 私有源,让这些包只在我们公司内部分享。

那这时候 Verdaccio 就是一个方便的选择。

什么是 Verdaccio

Verdaccio 是一个轻量级的私有 npm 仓库管理工具,它可以帮助我们搭建自己的私有 npm 源。

在这种情况下,使用 Verdaccio 搭建私有 npm 源可以提供以下优势:

  • 安全性:通过搭建私有 npm 源,您可以更好地控制和保护自己的代码。只有授权用户能够访问您的私有源,防止未经授权的人员获取敏感信息或篡改包。

  • 灵活性:通过自定义配置 Verdaccio,您可以根据团队或公司的需求来管理包和版本发布。您可以设置访问权限、存储路径等参数,以满足特定项目的要求。

  • 提高效率:拥有一个专门为团队开发定制的私有 npm 源意味着团队成员之间能够更快速地共享和管理代码。不需要依赖公共 npm 仓库下载、安装包,节省了时间和带宽消耗。

  • 自定义功能:Verdaccio 支持插件机制,允许您扩展其功能,并集成其他服务(如 LDAPGitHub )进行身份验证。这样就可以与现有系统集成,并实现更多定制化功能。

总而言之,在团队开发或者公司内部项目中使用 Verdaccio 私有化 npm 源是一种有效且灵活的方式来管理自定义包,并确保代码安全性与可靠性。通过搭建私有源, 团队能够更好地协作并加快项目进度。

为什么选择 Verdaccio

其实 npm 私有源目前开源主流,只剩下了 VerdaccioNexus 这 2 个项目,还在继续维护,更新频率也高

作为一个这 2 个项目,都用过的开发者,为什么我更推荐 Verdaccio 呢?

  1. 首先,它的社区生态生态更好,插件层出不穷;而 Nexus 的开源版本就相形见绌不少(收费版没用过不知道)
  2. 其次,它是 js 写的,我们前端开发者,可以很方便的编写插件,或者对它的源代码进行修改,添加我们自己的逻辑;而 Nexusjava 写的,需要一些学习成本
  3. 再来,它的使用,以及包的发布,管理,预览方式非常像 npmjs,熟悉 npmjs 的使用它简直 0 成本;而 Nexus 界面,对包信息的展示,简直可以用简陋来形容。
  4. 最后,其实它们 2 者关于 身份验证,权限控制 等等的功能都大差不差的。

当然有人肯定也会说,Nexus 多好啊,部署一份可以支持 maven, npm, docker, pypi … 这么多跨语言的团队,同时都可以使用呢!

诚然,假如你是一个 java 或者 运维人员,这样想是完全没有问题的。

但是,假如你是一名 前端/nodejs,在有主导权的情况下,我建议你选择 Verdaccio

因为其实只有我们前端自己,最懂自己的使用需求。

Nexus 那种通用类型的私有包管理项目,注定照顾不了,每一个细分语言最佳的使用体验!

部署 Verdaccio

Verdaccio 的部署方式很多,都非常的简单,5 分钟内快速上手

Nodejs 部署

全局

安装好 ltsnodejs 之后,直接全局安装:

# npm
npm i -g verdaccio
# yarn
yarn global add verdaccio
# pnpm
pnpm i -g verdaccio

这时候,一个 verdaccio 的命令会被注册在全局

执行 verdaccio -v 查看版本,显示版本号,代表你安装成功!

然后执行 verdaccio,你的私有源就在本地顺利启动了,启动日志如下所示。

 info --- config file  - /Users/icebreaker/.config/verdaccio/config.yaml
 info --- the "crypt" algorithm is deprecated consider switch to "bcrypt" in the configuration file. Read the documentation for additional details
 info --- using htpasswd file: /Users/icebreaker/.config/verdaccio/htpasswd
 info --- plugin successfully loaded: verdaccio-htpasswd
 info --- plugin successfully loaded: verdaccio-audit
 warn --- http address - http://localhost:4873/ - verdaccio/5.30.3

从启动日志中可以提取出几个重要信息:

  1. 加载配置的位置,默认情况下会在全局用户文件夹里,初始化一个 config 文件
  2. 用户名密码 hash 的存储文件 htpasswd 的位置
  3. 加载的插件信息
  4. 监听的 ip 和端口,默认是 localhost:4873,所以这时候是无法被其他机器访问到的

想要被其他机器访问到,需要去修改 config.yaml 这样反注释修改端口:

listen:
  - 0.0.0.0:4873

这样就能被内网里的其他机器访问到了,当然前提你要先开放(添加)你机器的端口出入规则

局部

同样我们可以创建文件夹,在里面初始化一个 package.json 文件

然后依次创建 config.yaml 并添加 start 命令即可:

{
  "name": "npm-proxy-verdaccio",
  "scripts": {
    "start": "verdaccio --config ./config.yaml"
  },
  "dependencies": {
    "verdaccio": "^5.30.3"
  }
}

Docker 部署

在安装 docker 之后,我们可以创建一个 docker-compose.yml:

version: "3.1"
name: npm-proxy-verdaccio

services:
  verdaccio:
    image: verdaccio/verdaccio
    container_name: "verdaccio"
    networks:
      - node-network
    environment:
      - VERDACCIO_PORT=4873
    ports:
      - "4873:4873"
    volumes:
      - "./storage:/verdaccio/storage"
      - "./config:/verdaccio/conf"
      - "./plugins:/verdaccio/plugins"
networks:
  node-network:
    driver: bridge

然后使用 docker compose up -d 就能顺利启动了, 不过这种方式需要自己准备 config.yaml 文件放入容器卷中。

云服务商一键部署

这种主要是国外的云服务商支持,我们用的比较少,详见:

https://verdaccio.org/docs/installation#cloudron

注册用户

部署完了之后我们开始注册用户,打开本机的 http://0.0.0.0:4873/ 可以看到页面

使用 Verdaccio 私有化 npm 源指南,npm,前端,node.js

我们本地执行 npm adduser --registry http://0.0.0.0:4873/

按照顺序,输入我们的用户名密码邮箱

完成之后, verdaccio 目录下会出现一个 htpasswd 文件

里面格式如下:

icebreaker:xxxxxx:autocreated 2024-04-08T14:23:03.152Z

同时你全局的 .npmrc 里面出现:

//0.0.0.0:4873/:_authToken="xxxxxxx"

这代表你可以发包了!

发布私有 npm 包

发布私有 npm 包可以很简单,也可以很复杂(各种编译)

这里我们按照简单的来, 创建一个 test-pkg 文件夹,初始化 package.json

{
  "name": "test-pkg",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {},
  "keywords": [],
  "files": ["index.js"],
  "author": "",
  "license": "ISC",
  "publishConfig": {
    "access": "public",
    "registry": "http://0.0.0.0:4873/"
  }
}

然后随便创建个 index.js 写点啥,就可以直接在项目里执行 npm publish

发布成功之后可以看到,我们的包已经上传上去了!

使用 Verdaccio 私有化 npm 源指南,npm,前端,node.js

点击进入详情:

使用 Verdaccio 私有化 npm 源指南,npm,前端,node.js

可以看到,界面元素和 npmjs 也差不多,也是可以查看 README.md 和各种版本依赖的。

管理 npm 包

此时我们上传 npm 包后,相关的文件就被上传到 config.yaml 里配置的 storage 里去了

这里我们配置的是 storage: ./storage,所以所有包的位置都在这

使用 Verdaccio 私有化 npm 源指南,npm,前端,node.js

在这里我们就能对包进行删除等等操作了,比如想让某个包在列表里看不见,直接把它在 .verdaccio-db.json 文件里删去即可。

项目使用私有源

默认情况下,Verdaccio 是开启 proxy npmjs 模式的

这个意思就是,你向它请求安装的包,假如 Verdaccio 里面没有的话,会去 npmjs 上找,然后返回给用户,同时也放在 Verdaccio 服务器本地缓存下来,这样下次同样的包就会命中缓存。

但是同样,这也会带来一些问题,比如全量代理之后,服务器 SSD 容量够不够大,需不需要定期清理那些用不上的 npm 包的问题。这种看各个团队/运维的需求和能力,所以项目里一般也是分为 2 种方式去使用它。

全量切换

顾名思义,全部的 npm 包都从 Verdaccio 服务器获取。

方式也很简单,只需要在 .npmrc 里添加:

registry=http://0.0.0.0:4873/

然后删掉 lock 文件,重新安装即可

部分切换

显式指明我们自己的包,在 Verdaccio npm 私有仓库中的的完整路径。(指明 tgz 包的版本)

// package.json
{
  "dependencies": {
    "xxx": "http://xxxx"
  }
}

或者,可以在在 .npmrc 里显式指定特定包的特定注册源

xxxx:registry=http://xxxx
# @scoped/xxx
@xxx:registry=http://xxxx

这样我们 package.json 里面就不会出现这种不和谐( http: / npm: / git:)的版本号了。

结尾

写到这里,发现文字写的太多了,太长的文章没人看,所以这篇文章就到此为止。

但是实际上 Verdaccio 还有很多强大的功能,推荐大家去尝试尝试。

源代码链接

https://github.com/sonofmagic/npm-proxy-verdaccio文章来源地址https://www.toymoban.com/news/detail-852024.html

到了这里,关于使用 Verdaccio 私有化 npm 源指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 Sealos 将 ChatGLM3 接入 FastGPT,打造完全私有化 AI 客服

    FastGPT 是一款 专为客服问答场景而定制的 开箱即用的 AI 知识库问答系统。该系统具备可视化工作流功能,允许用户灵活地设计复杂的问答流程,几乎能满足各种客服需求。 在国内市场环境下,离线部署对于企业客户尤为重要。由于数据安全和隐私保护的考虑,企业通常不愿

    2024年02月06日
    浏览(55)
  • 【Python】极简部署私有化ChatGPT-Web,使用Flask框架编写网页版ChatGPT

    python环境下可极简配置 windows、linux、mac os均可部署 支持多用户使用 多对话管理 公式显示 流式逐字加载显示 代码高亮 仓库链接地址:https://github.com/LiangYang666/ChatGPT-Web,用的好麻烦给个star啦 可参照README 执行 python flask_main.py 运行程序.若程序中未指定apikey也可以在终端执行时

    2024年02月01日
    浏览(65)
  • 支撑开源LLM大模型的私有化部署,需要单机多个不同型号GPU混合使用的同学看过来

    有2台深度学习的工作站,分别有2张3090和2张4090,Qwen-14B-Chat轻松跑起,知识库检索等应用效果还可以,想提升到Qwen-72B-int4(官方要求最低48G显存),于是把4张卡集中到同一台机器(多级多卡也是可以的,但不是每个框架都支持分布式GPU),过程中遇到一些坑,度娘无混卡的

    2024年02月01日
    浏览(53)
  • Chatgpt私有化部署(全流程)

      当下使用chatgpt来帮助完成工作已然成为主流,但想访问必须先面对地区的封锁,所以使用openai官方提供的API来部署至本地服务器从而更加便利的使用chatgpt。本文章主要介绍如何部署私有聊天机器人。 公网服务器一台(可选阿里云、腾讯云等) openai账号,用于获取私人的

    2023年04月20日
    浏览(116)
  • Linux中使用verdaccio 搭建私有npm 服务器

    Linux中安装Node 安装完成 输入verdaccio,出现下面信息代表安装成功,同时输入verdaccio后verdaccio已经处于运行状态,当然这种启动时暂时的,我们需要通过pm2让verdaccio服务常驻 就可以通过http://xxx(ip地址)去访问了 若无法访问,查看下端口是否已打开 下面列一下几种使用场景

    2024年02月14日
    浏览(47)
  • Linux 中使用 verdaccio 搭建私有npm 服务器

    Linux中安装Node 安装完成 输入verdaccio,出现下面信息代表安装成功,同时输入verdaccio后verdaccio已经处于运行状态,当然这种启动时暂时的,我们需要通过pm2让verdaccio服务常驻 就可以通过http://xxx(ip地址)去访问了 若无法访问,查看下端口是否已打开 下面列一下几种使用场景

    2024年02月14日
    浏览(56)
  • Docker详解(十六)——Docker私有化仓库创建

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Docker的私有化仓库创建。 对于一些有能力的企业来说,有时希望能够创建一个私有化的Docker仓库,这样一来可以将自己定制的系统发布到自己的仓库里,在保证安全的前提下使用;二来可以节省网络带宽,可以使得Doc

    2023年04月09日
    浏览(44)
  • 可私有化部署的车牌识别API接口

    车牌OCR识别 的出现为企业提供了一种高效、准确的车牌识别和信息提取解决方案。通过图像预处理、区域定位、字符分割和字符识别等步骤,将获取的车牌图片或视频中的车牌信息瞬时输出,可提供车牌识别API接口做二次开发,该 API 能够自动识别车牌中的段信息,并

    2024年02月11日
    浏览(56)
  • 安装Joplin Server私有化部署(docker)

    前言: 老规矩官方文档链接 1. 首先拥有一个自己的云服务器(如果没有外网访问需求的话就随意吧) 安装docker安装方式 这里Joplin是使用PostgreSQL数据库的形式, 如果没有PostgreSQL库的话, Joplin默认使用的是SQLLite数据库 我这里使用的是docker-compose部署用的是官网的demo.yml所以就直接也

    2024年02月21日
    浏览(57)
  • 企业微信私有化的价值与实践

    随着信息技术的飞速发展,企业微信作为一种高效、便捷的通讯工具,已经成为了众多企业的首选。然而,对于一些大型企业或者对信息安全有特殊需求的企业来说,使用公有云的企业微信已经无法满足其需求,此时,企业微信的私有化就成为了更好的选择。 一、企业微信私

    2024年01月21日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包