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
相关推荐
Mike_jia11 分钟前
Keep深度解析:开源AIOps告警中枢的实践革命
前端
薛定谔的猫-菜鸟程序员11 分钟前
用Node.js施展文档比对魔法:轻松实现Word文档差异比较小工具,实现Word差异高亮标注(附完整实战代码)
node.js·word·diff算法·word文档差异比较工具
Mintopia16 分钟前
计算机图形学进阶探索与实践
前端·javascript·计算机图形学
代码小学僧18 分钟前
团队协作必备!pnpm 版本管理与 corepack 使用指南
前端·node.js·团队管理
一天睡25小时18 分钟前
前端工程化&&Webpack 和 Vite 的区别
前端·前端框架
gxn_mmf18 分钟前
页面需要重加载才能显示的问题修改
前端·bug
北京_宏哥19 分钟前
🔥Jmeter(二十五) - 从入门到精通 - JMeter函数 - 下篇(详解教程)
前端·jmeter·面试
天生我材必有用_吴用21 分钟前
鸿蒙开发入门到进阶:从布局基础到组件实战
前端·harmonyos·arkts