pnpm和npm的区别,pnpm的安装

Outshine 2024-03-06 | 阅读 585

pnpm是Node.js安装应用模块的包管理器。那么pnpm和npm相比,pnpm在设计和功能上有什么区别呢?

安全性: pnpm在安装包时采用了严格的依赖解析策略。默认情况下,它不会扁平化依赖,这意味着子依赖不会被提升到项目的顶层node_modules目录,这减少了意外覆盖依赖的风险。

依赖关系: pnpm通过创建非扁平化的node_modules结构,避免了由于包之间的版本冲突所导致的问题。 npm的依赖扁平化可以导致许多顶层node_modules目录中的包,这在一些情况下可能会导致版本冲突或意外的行为。

存储方式: pnpm使用一个内容寻址的文件存储方式,如果多个项目使用相同的包版本,pnpm会存储单个副本,并在每个项目中创建硬链接。这节省了大量的磁盘空间并提高了安装速度。 npm为每个项目安装独立的包版本,即使多个项目使用相同的包版本,也会在每个项目的node_modules目录下存储一个副本。

性能: pnpm在性能方面通常优于npm,因为它使用硬链接和符号链接来避免重复包的冗余副本,从而加快了安装速度。

命令行界面: npm和pnpm的命令行界面(CLI)非常相似,大多数命令都是一致的,但可能在某些高级功能和命令上有所不同。

兼容性: pnpm虽然在许多项目中能够无缝工作,但在某些依赖于特定node_modules结构的工具或项目中可能会遇到兼容性问题。 npm作为最早和最广泛使用的包管理器,几乎被所有的Node.js项目支持。 总体来说,pnpm在空间和性能方面提供了显著的优势,但在某些项目中可能需要额外的配置来保证与传统npm相同的行为。选择哪一个主要取决于个人或团队的需求和项目的特定要求。

pnpm的安装

一、全局安装:npm install pnpm -g

右键单击开始按键,按 A 键进行控制台,输入npm install pnpm -g 命令进行安装。参数 g 表过全局安装。

二、设置下载源

  1. 查看下载源:

pnpm config get registry

  1. 切换淘宝源,可以加快下载速度

pnpm config set registry https://registry.npmmirror.com/ 3. 还原:

pnpm config set registry https://registry.npmjs.org

三、安装包 pnpm install 包名称

pnpm i 包名称

pnpm add [包名称1] [包名称2] [包名称3] // 同时安装多个包

参数:

-g 全局安装

-S 默认写入package.json文件的dependencies对象中

-D 将包放在package.json文件的devDependencies(本地环境开发模式)对象里面

--production 只安装生产环境依赖

dependencies:项目依赖。无论在开发环境(线下)还是生产环境(线上)中都需要的包。如js框架vue、页面路由vue-router,各种ui框架element-ui、vant等。

devDependencies: 开发依赖。比如css预处理器、vue-cli脚手架、eslint之类。 这些包只是在本地或开发坏境下运行代码所依赖的,若发到线上,其实就不需要devDependencies下的所有依赖包;因此不需要打包。

pnpm publish //发布包

pnpm config set store-dir //设置存储路径

pnpm -v // 查看版本号

pnpm list [-g] //查看依赖(全局)

四、删除包 pnpm uni

pnpm remove 包名称 // 移除包

pnpm remove 包名称 --global // 移除全局包

五、更新包 pnpm up // 更新所有依赖项

pnpm upgrade 包 // 更新包