首页 > 其他分享 >pnpm 和 npm

pnpm 和 npm

时间:2024-10-11 22:20:19浏览次数:9  
标签:npm 依赖 项目 pnpm 使用 安装

pnpmnpm 是 JavaScript 生态系统中常用的包管理工具,它们各自有不同的特性和优缺点。下面是这两者的详细比较:

1. 基本概念

  • npm (Node Package Manager)

    • 是 Node.js 的默认包管理器,提供安装、更新、卸载 JavaScript 包的功能。
    • 使用 package.json 文件来管理项目依赖。
  • pnpm (Performant NPM)

    • 是一个快速、高效的包管理器,旨在解决 npm 的一些性能和磁盘空间问题。
    • 采用了硬链接的方式,将依赖共享到全局存储中,避免重复下载。

2. 性能

  • npm

    • 每次安装依赖时会下载并存储所有的包,特别是大型项目时会造成大量的磁盘占用。
    • npm v5 及以上版本开始引入缓存机制,提高了安装速度,但仍然存在某些性能瓶颈。
  • pnpm

    • 使用硬链接技术,只在磁盘上保留一个副本的依赖,其他项目通过硬链接引用,极大地节省了磁盘空间和提高了安装速度。
    • 通常在安装多个项目或依赖时比 npm 更快。

3. 依赖管理

  • npm

    • 使用扁平化依赖结构,可能会导致包版本冲突的问题。
    • 默认会将所有的依赖安装到 node_modules 文件夹中,结构较深。
  • pnpm

    • 使用内容寻址存储(Content Addressable Storage),依赖以树形结构存储,可以避免依赖冲突。
    • 确保所有包的依赖是以相同的版本被引用,从而保证了包的安全性和一致性。

4. 使用命令

  • npm

    • 常用命令包括:
      • npm install:安装依赖
      • npm uninstall:卸载依赖
      • npm update:更新依赖
      • npm init:初始化新项目
  • pnpm

    • 常用命令类似,但有一些独特的用法:
      • pnpm install:安装依赖(使用硬链接)
      • pnpm remove:卸载依赖
      • pnpm update:更新依赖
      • pnpm init:初始化新项目
      • pnpm add <package>:添加依赖并安装

5. 配置和生态系统

  • npm

    • 配置简单,使用 .npmrc 文件进行个性化设置。
    • 拥有丰富的生态系统,支持大量的开源包。
  • pnpm

    • 也支持 .npmrc 文件进行配置,并且有自己的配置选项。
    • 兼容 npm 的大多数功能和生态,允许用户无缝切换。

6. 社区和支持

  • npm

    • 拥有庞大的用户基础和丰富的文档支持,几乎所有的 Node.js 项目都可以使用 npm。
  • pnpm

    • 社区在不断发展,越来越多的项目开始使用 pnpm,但用户基础相对较小。
    • 文档齐全,易于理解和使用。

7. 适用场景

  • npm

    • 适合需要兼容性、稳定性和广泛支持的项目。
    • 如果团队成员之间对包管理工具没有统一的偏好,使用 npm 可能会更加方便。
  • pnpm

    • 适合关注性能和磁盘空间的项目,特别是大型项目或 monorepo。
    • 如果项目需要频繁地安装和更新依赖,pnpm 可以显著提高效率。

总结

选择 pnpm 还是 npm 取决于项目需求和团队的具体情况。若想要更快的安装速度和更少的磁盘占用,pnpm 是一个优秀的选择;而 npm 作为默认的包管理器,广泛的支持和成熟的生态也使其非常可靠。

标签:npm,依赖,项目,pnpm,使用,安装
From: https://blog.csdn.net/bollat/article/details/142864600

相关文章

  • nodejs 和 npm 版本对应关系
    一、nodejs和npm的版本是有适配的首先看下官网列明的大概匹配关系:官网链接地址:https://nodejs.org/zh-cn/about/previous-releases可以查看下本地的版本,根据上表中的对应关系,看是否差别太大。如果差别太大需要更新到对应版本,不然会出现各种报错问题,导致npm命令执行失败。......
  • 淘宝 NPM 镜像站切换新域名啦
    阿里云官方镜像站:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区https://developer.aliyun.com/mirror/?spm=a2c6h.13651102.0.0.6b581b11FYGgU9&serviceType=mirror 简介: 用CNPM/淘宝源的开发者们请注意,淘宝NPM镜像站喊你切换新域名啦。新的Web站点:https://npmmirror.co......
  • 002、v3admin学习,设置npm的端口和ip
    1、使用命令行npmrundev启动v3admin的时候,会有多个ip地址以及端口 2、在vite.config.ts中,修改host为false和port为1314 3、ctrl+c结束端口,并运行npmrundev来启动。可以看到只有一个http://localhost:1314/端口启动了。 4、浏览器打开,可以正常显示。5、效果如下:......
  • Mac 系统终端和vscode终端的pnpm版本和路径不一致问题,而且vscode终端的pnpm没法升级
    系统终端whichpnpm路径是/Users/zhanglinfeng/.nvm/versions/node/v16.19.1/bin/pnpm vscode终端 whichpnpm 路径是/usr/local/bin/pnpm 为了跟系统的一致,需要修改.zshrc文件新的#AddRVMtoPATHforscripting.MakesurethisisthelastPATHvariablec......
  • npm淘宝镜像最新配置
    npm淘宝镜像最新配置https://www.npmmirror.com/原来的https://registry.npm.taobao.org已替换为https://registry.npmmirror.com,最新的配置淘宝镜像的淘宝官方提供的方法npmconfigsetregistryhttps://registry.npmmirror.com你可以使用我们定制的cnpm命令行工具代替......
  • 打造双模兼容npm包:无缝支持require与import
    为了实现一个npm包同时支持require和import,你需要确保你的包同时提供了CommonJS和ES6模块的入口点。这通常是通过在package.json文件中指定main和module字段来实现的,以及在构建过程中生成两种不同模块格式的文件。以下是具体步骤:设置package.json:main字段:指定CommonJS模......
  • 国内npm源镜像(npm加速下载) 指定npm镜像
    国内的NPM源镜像可以通过指定不同的镜像地址来加速下载依赖包。以下是几种常用的国内NPM源镜像地址和设置方法:常用国内NPM源镜像:npm官方原始镜像:https://registry.npmjs.org/淘宝NPM镜像:http://registry.npmmirror.com阿里云NPM镜像:https://npm.aliyun.com腾......
  • node.js安装与npm镜像源切换
    下载nvm点击进入nvmgit仓库下载nvmwindows用户点击exe文件进行下载。下载完毕之后点击安装包进行安装检查是否安装成功打开windows控制栏输入nvm-v检查是否安装成功使用nvm下载node.js打开控制栏输入nvminstalllatest安装当前node......
  • jsDoc npm 模块任务
    目前我正在工作/维护遗留的js/react应用程序,没有办法重新工作到typesript,这就是为什么我打开jsdoc作为js现有的开发时类型系统。太长了;typescriptnpm模块由jsdoc制作,useduck在70loc下带回了redux的黄金时代。该模块在开发时的主要用例,帮助您的复杂状态保持......
  • 切换淘宝最新镜像源npm
    要切换淘宝的最新镜像源,你可以按照以下步骤操作:1.使用 nrm 工具(推荐)nrm是一个npm镜像源管理工具,可以方便地切换不同的npm镜像源。安装 nrm1.npminstall-gnrm查看可用的镜像源1.nrmls你会看到类似以下的输出: npm--------https://registry.npmjs.org/......