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
相关推荐
学习ing小白1 小时前
JavaWeb - 5 - 前端工程化
前端·elementui·vue
真的很上进1 小时前
【Git必看系列】—— Git巨好用的神器之git stash篇
java·前端·javascript·数据结构·git·react.js
胖虎哥er1 小时前
Html&Css 基础总结(基础好了才是最能打的)三
前端·css·html
qq_278063711 小时前
css scrollbar-width: none 隐藏默认滚动条
开发语言·前端·javascript
.ccl1 小时前
web开发 之 HTML、CSS、JavaScript、以及JavaScript的高级框架Vue(学习版2)
前端·javascript·vue.js
小徐不会写代码1 小时前
vue 实现tab菜单切换
前端·javascript·vue.js
林太白2 小时前
❤Node09-用户信息token认证
数据库·后端·mysql·node.js
2301_765347542 小时前
Vue3 Day7-全局组件、指令以及pinia
前端·javascript·vue.js
喝旺仔la2 小时前
VSCode的使用
java·开发语言·javascript
ch_s_t2 小时前
新峰商城之分类三级联动实现
前端·html