Nodejs 第八章 npm搭建私服

什么是npm私服

npm私服(私有仓库)指的是建立在企业或组织内部的、独立于公共 npm 注册中心的私有 Node 包管理器。私服允许团队在不公开源码的情况下共享和复用代码,也可以用来代理公共 npm 注册中心,缓存下载过的包,提高安装速度,减少对外部网络的依赖。

npm私服的主要用途(收益)

  1. 管理私有包
    • 私服使得企业可以在不公开的情况下共享内部的 Node 包。这对于存储商业逻辑或内部工具非常有用。
  2. 缓存公共包
    • 私服通常会缓存从公共 npm 注册中心下载的包,这意味着可以更快地安装相同的包,因为它来自内网,而不是互联网。
  3. 控制和安全性
    • 通过使用私服,企业可以更好地控制哪些包可以被内部使用,以及如何使用这些包,增强了代码的安全性和合规性。
  4. 持续集成/持续部署(CI/CD)
    • 在CI/CD流程中,私服可以提供稳定的包版本管理,确保部署过程的一致性。
  5. 提高效率
    • 开发团队不必每次都从公共 npm 注册中心下载相同的包,节约了带宽和时间。
  6. 降低公共注册中心依赖
    • 如果公共 npm 注册中心不可用,私服可以作为一个备用源来保证开发和部署流程的连续性。

如何搭建npm私服

  • Nexus Repository OSS:一个广泛使用的仓库,支持多种包类型,包括 npm。
  • JFrog Artifactory:一种企业级的解决方案,支持多种包管理和自动化工具。
  • Verdaccio:一个轻量级的私有 npm 代理注册中心,容易部署和维护。
  • GitHub Packages:GitHub 提供的包管理服务,支持 npm 私有包。

设置私服需要一定的配置工作,比如更新项目的 .npmrc 文件以指向私服的地址,以及可能的身份验证配置。一旦设置完成,私服可以显著提高组织内部开发效率和代码共享的便利性。

Verdaccio

  1. 首先从安装开始
js 复制代码
npm install verdaccio -g

使用方式很方便,直接终端verdaccio运行

  • 可以通过verdaccio --help查看命令
  • 这里我采用的是直接运行,所以他直接自动分配一个端口号给我了
  • 如果看不习惯英文的话,可以通过右上角的一个齿轮状图标打开可以修改语言
  • 回到我们拿到的命令:npm adduser --registry http://localhost:4873/
    • 这里其实就是将我们的账号指向本地的一个内网服务(4873)上
    • 如果有npm账号了,就直接npm login --registry http://localhost:4873/进行登录,后面这个指向还是要一直写上的
    • 然后npm publish --registry http://localhost:4873/将我们的包上传到私服
  • 由于我们发的是私服,所以这里的版本虽然已经跳到了1.0.4了,但npm官网上面我们的包版本其实还是1.0.1没有受到影响
  • 而当我们进行下载的时候就可以npm install xm-demo --registry http://localhost:4873/,这个时候下载下来的就是1.0.4版本而不是npm官网上的1.0.1版本(因为我们指向了本地仓库的源)。其中这里需要注意我们的后缀端口,具体是多少。默认是4873,而像小满这里就使用第二种方式指定端口9999

取消后缀

  • 如果每次都需要加上--registry http://localhost:4873/这样的一个后缀就会很麻烦,有没有什么好的解决方式?

  • 还记得前几章所讲的包管理器xmzs了吗?

    • 我们通过这个包提供的命令mmp add将其添加到镜像中
markdown 复制代码
*   然后使用`mmp use`这个镜像
markdown 复制代码
*   这时候直接`npm publish`就OK了

基本命令

  • 总结上面的配置命令,还是需要记住的
sh 复制代码
#创建账号
npm adduser --registry http://localhost:4873/
# 账号 密码 邮箱
sh 复制代码
# 发布npm
npm publish --registry http://localhost:4873/
sh 复制代码
#指定开启端口 默认 4873
verdaccio --listen 9999
sh 复制代码
# 指定安装源
npm install --registry http://localhost:4873
sh 复制代码
# 从本地仓库删除包
npm unpublish <package-name> --registry http://localhost:4873
相关推荐
IT_陈寒21 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
山河木马1 天前
矩阵专题0-webGL中的矩阵
javascript·webgl·计算机图形学
徐小夕1 天前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
一份执念1 天前
uni-app 小程序分包限制处理与主包体积优化实战
前端·微信小程序
Asize1 天前
多模态生图:从 Vite 工程化到前端调用 Qwen Image
javascript·人工智能·后端
MariaH1 天前
初识MySQL
前端
陳陈陳1 天前
从Token到Embedding:一篇文章搞懂大模型的「文字数学变形记」
前端·javascript·ai编程
十有八七1 天前
AI时代的置身X内
前端·人工智能
用户938515635071 天前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
橘子星1 天前
LLM 无状态架构实践:从原理到代码落地
前端·javascript·人工智能