首页 > 其他分享 >npm私服 verdaccio 搭建

npm私服 verdaccio 搭建

时间:2024-07-21 21:52:49浏览次数:9  
标签:npm Verdaccio 私服 verdaccio 使用 搭建

1、什么是npm 私服

我们前端(web,nodejs)平常使用的各种包,什么vue,react,react-router, zustand等,都会从 https://registry.npmjs.org/ 这个镜像源上download, 当然我们国内开发为了download 方便,快速down下来,下载包的时候会指定国内镜像源,比如淘宝镜像。像这些提供给全网使用的镜像服务,就是公共服务了。

公共服务服务全世界全网同胞,如果是公司内部使用的包,含一些定制化,私有化,不方便发布到外网的组件或者package,应该如何处理呢?

常见的做法,

1、封装成组件,下次哪个项目或者开发想要的时候,过来copy 下
2、提交到公司内网的gitlab(内网gitlab搭建) 上,然后在package.json 的依赖里面,使用gitlab地址加分支名来使用该包
3、当然还有其他的奇淫技巧

上面的做法,都有相应的问题,如无法在同一个地方维护,新增的功能或者修复的bug 很难同步到各个项目,没有版本概念等

如果有这么一个像淘宝镜像服务的私有服务是不是就能很丝滑使用?对的,npm 私服就能满足我们私有化服务的要求

2、什么是verdaccio

npm 服务有很多,比如sinopia, cnpm 等。但是你一google npm 私服,搜索出来大部分的结果是 verdaccio。 毫无疑问,这个verdaccio 是受大家最欢迎的。github 地址,vedaccio,官网地址, 官网, 其他的废话不多说,了解更多关于verdaccio 的内容,没有比官网和github更全面了。

3、为什么 要搭建npm 私服

至于为什么要搭建npm 私服,第一点说明了一些背景也是原因,另外一个,私服搭建后,公司 cicd jekins 这类自动化构建工作在拉取这些包时,因为都是走内网,会比去公网拉取更快;npm 私服搭建也是前端自动化环节中很重要的一环;当然这个也算是技术 kpi中的一个。

4、如何搭建verdaccio

来来来,直接上官网。

Verdaccio 是一个 Node.js 私有和代理 registry。 在安装之前,您需要确保系统环境已满足以下条件。
最低要求:
Node.js v16 或者更高。
你喜爱的 Node 包管理器 npm、pnpm 或者 yarn(经典版和现代版)。
使用现代浏览器以访问Web界面, 支持使用 Chrome、 Firefox、 Edge和IE11 浏览器。

安装cli

npm install -g verdaccio

启动

pm2 start verdaccio

pm2 是nodejs 进程管理的一个工具,这里不做缀叙,pm2 这种方法 更适合前端同学或者nodejs 同学的使用。

上面的两个命令执行之后,就可以访问你的私服了。

这个方式可以在本地使用,也可以在liunx 服务器上使用,没有增加额外的心智负担和额外的学习成本。

5、搭建后的使用

发布组件

下面 100.000.100.1 是服务器ip地址,瞎写的,实际使用的时候 换成服务器ip 即可

注册用户

npm adduser --registry http://100.000.100.1:4873

输入账号、密码、邮箱 (这些都随便填,但是要记住,下一步登录的时候 是需要这样的内容的)

登录用户

npm login --registry http://100.000.100.1:4873

输入账号、密码、邮箱

npm publish 发布组件

npm publish --registry http://100.000.100.1:4873

到这里就能看到你组件了,

6、常见问题解决

私服主题定制,比如我要换个头,换个脚,换一个 favicon 等,换成公司的或者自己的。请修改 verdaccio 的配置文件中的 web 字段。 配置文件位置: /root/.config/verdaccio/config.yaml ,

vim /root/.config/verdaccio/config.yaml

# Verdaccio 监听的主机和端口
listen: 0.0.0.0:4873
# 存储包的位置
storage: ./storage
# 配置上游镜像源的设置
uplinks:
  taobao:
    url: https://registry.npmmirror.com/

# 配置包的访问权限和范围
packages:
  '@scope/*':
    access: $all
    publish: $authenticated
    proxy: taobao
# Verdaccio 的身份验证设置
auth:
  htpasswd:
    file: ./htpasswd
# 配置 Verdaccio 中间件的设置
middlewares:
  audit:
    enabled: true
# 配置 Verdaccio 的日志记录设置
logs:
  - { type: stdout, format: pretty, level: http }
  - { type: file, path: verdaccio.log, level: info }
# 配置 Verdaccio 的 Web 界面设置
web:
  title: Verdaccio
  logo: logo.png
  theme: default
# 配置 Verdaccio 的安全设置
security:
  api:
    jwt:
      sign:
        expiresIn: 7d
      verify:
        maxAge: 7d
  web:
    headers:
      X-Content-Type-Options: 'nosniff'
      X-Frame-Options: 'deny'
      X-XSS-Protection: '1; mode=block'

修改结束后,需要重新启动下 verdaccio, 才能让配置文件生效

pm2 restart verdaccio

npm install 时,控制台 报 500 internal error

其他

1、域名配置,不要ip访问

2、配置https 证书

3、自动发布组件&更新组件 version 号

上面的几个问题,都已经解决,目前因为篇幅原因、时间等原因,本篇不做详细展开,会在下一篇做详细解释。

本篇内容不是很适合没有一点linux基础或者 nodejs的同学,相关知识 麻烦单独学习下, 比如 linux服务器购买,linux 服务器的基本命令使用,pm2 的安装和使用。也可以加群一起讨论。

8、寻找正在使用或者想用verdaccio的道友

如果需要或者喜欢用verdaccio的朋友,欢迎加我微信(备注 verdaccio, 或者npm 私服)拉群一起讨论使用。
目前这套私服已经在为公司服务,使用时间越长,问题就会越多,欢迎一起参与讨论,让私服更稳定,更好用

标签:npm,Verdaccio,私服,verdaccio,使用,搭建
From: https://www.cnblogs.com/adouwt/p/18314765

相关文章

  • React+TypeScript 组件库开发全攻略:集成Storybook可视化与Jest测试,一键发布至npm
    平时我除了业务需求,偶尔会投入到UI组件的开发中,大多数时候只会负责自己业务场景相关或者一小部分公共组件,极少有从创建项目、集成可视化、测试到发布的整个过程的操作,这篇文章就是记录组件开发全流程,UI组件在此仅作为调试用,重点在于集成项目环境。组件我们使用React+TypeScri......
  • npm 语义化依赖管理
    之前搞前端项目,经常遇到依赖的问题,这下学到了npm的依赖管理,以后应该能应对这些问题了什么是语义化依赖管理npm根据package.json中的dependencies字段来管理依赖,一般根据下面这种格式"dependencies":{"package-name":"version","express":"4.14.0"}npm中的version遵......
  • 解决IDEA自带的Maven 3.9.x无法刷新HTTP Nexus私服的问题
    解决IDEA自带的Maven3.9.x无法刷新HTTPNexus私服的问题前言在日常开发中,我们经常会使用Maven来管理项目的依赖。而Nexus私服则是一个常用的Maven仓库管理工具,可以帮助我们更好地管理和分发项目的依赖。然而,有时候我们会遇到一些棘手的问题,比如在使用IDEA自带的Maven3.9.x时,无......
  • npm/yarn/pnpm install失败:ERR_PNPM_NO_VERSIONS No versions available for uWebSock
    ERR_PNPM_NO_VERSIONS NoversionsavailableforuWebSockets.js.Thepackagemaybeunpublished.我在新项目中想要切换包管理器从yarn到pnpm的时候,删除node_modules和yarn.lock之后,pnpminstall竟然提示这个包可能没发布。我觉得这个不可能,都需要使用了,怎么可能没发......
  • 【已解决】包管理器pnpm的使用,并解决pnpm报错系统禁止运行脚本
    1.node包管理器pnpm的优势磁盘空间效率:pnpm使用全局磁盘内容可寻址存储,通过硬链接和符号链接管理node_modules,从而减少磁盘空间的使用,同时保持目录的清洁。安装速度:pnpm的安装速度比npm快近2倍,这得益于其共享依赖的机制,避免了在每个项目中重复安装相同包的副本。依赖管理:pn......
  • npm
    npm(1)npm镜像源配置  npm默认的镜像地址是:https://registry.npmjs.org   淘宝开源的镜像站:https://registry.npmmirror.com/  查看当前的镜像源:npmconfiggetregistry  设置为淘宝镜像源:npmconfigsetregistryhttps://registry.npmmirror.com/   ......
  • pnpm错误, ERR_PNPM_UNEXPECTED_STORE  Unexpected store location
    背景 ERR_PNPM_UNEXPECTED_STORE UnexpectedstorelocationThedependenciesat"C:\Users\acer\Code\Nuxt3\init\node_modules"arecurrentlylinkedfromthestoreat"C:\Users\acer\.hvigor\caches\v3".pnpmnowwantstousethe......
  • 2024-07-15 vue组件发布npm后,再使用,样式不见了?==》查看样式是否在dist包里,有的话应
    哎,嗯。。。emmm。。。好,问题就是这样的,最近写了vue组件打算上到npm,然后上是上了,但是样式却没有生效??左上角是组件样式本地调试的截图,可以看到是生效的,右上角的截图是我在别的项目引用了我写的这个库,结果样式却没有生效。我打包后的文件列表如下: 注意:style.css包含了所有的样......
  • 第二部分:关键技术领域的开源实践【企业Maven私服】
    企业Maven私服主要解决了以下几个关键的痛点需求:网络访问限制:许多企业出于安全考虑,限制了对外部网络的访问,尤其是对公网上的远程仓库如Maven中央仓库的直接访问。Maven私服作为内部的仓库,可以替代对中央仓库的依赖,使得即使在没有互联网连接的情况下,开发人员也可以获取到所需的......
  • 企业级--Sonatype Oss(01)私服搭建
    SonatypeOss后续使用nexus替代环境nexus环境要求(截止目前(3.70.1-02):jdk环境:支持jdk8(支持所有版本)、jdk11(3.67.0之后的版本),jdk17(3.69.0之后的版本,不支持OrientDB)这3个版本,。内存:建议4G。存储:根据自己仓库存储类型,选择不同的存储空间,建议60G。其他:如果只使用ma......