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
相关推荐
程序员大阳5 小时前
副队长JavaScript教程(20)–三元运算符、逗号运算符
javascript·三元运算符·逗号运算符
计算机魔术师5 小时前
AI渗透框架3小时破云,中国黑客组织正在升级打法
前端
蒲公英内测分发5 小时前
智能手环出海测试,海外合作方分散在不同国家,Android 测试包怎么持续分发和更新?
android·前端·人工智能·测试工具·智能手表
朱涛的自习室5 小时前
高价软件已死,我让 AI 开启了「平替计划」(Day 7 / 7)
android·前端·github
沙蒿同学6 小时前
Wails v3 实战:一个桌面提醒客户端,从 v2 升到 v3 的全过程
前端·后端·github
inquisiter6 小时前
KernelGpt的部分尝试
java·前端·apache
the局外人6 小时前
用 TRAE 把 Markdown文档 搬到微信公众号
前端
Autumn_ing6 小时前
AI原型设计工具怎么选?可编辑原型与可运行前端适合什么场景
前端·小程序·产品经理·代码·codex·墨刀ai客户端·ai原型
夕阳_醉了7 小时前
前端通用组件开发全指南|从 0 到 1 打造稳定可复用的业务组件
前端
Amos_Web7 小时前
Rspack 源码解析(三十):SourceMapDevToolPlugin 如何生成并关联 source map
前端