‹ 返回笔记 Esc·

npm 问题与修复

npm 与 pnpm 对比 关键差异: 1. 性能:pnpm 相比 npm 通过硬链接和符号链接优化了包管理,它更高效地处理依赖和缓存,减少了磁盘空间的使用。 2. 锁文件:pnpm 使用 pnpm-…

npm 与 pnpm 对比

功能 **pnpm**
** 命令**
**npm**
** 命令**
备注
安装依赖 pnpm install npm install 两者都可以根据 package.json
安装项目依赖,但 pnpm install
会利用 pnpm-lock.yaml
优化安装,速度较快。
**安装依赖并保存到 ****package.json** pnpm add <package> npm install <package> pnpm add
会将包添加到 dependencies
npm install
也会添加,但 pnpm
使用的安装方式更高效。
安装开发依赖 pnpm add <package> -D npm install <package> -D pnpm add
npm install
都可以安装开发依赖,但 pnpm
使用的包管理方式在性能上更优。
卸载依赖 pnpm remove <package> npm uninstall <package> 两者命令功能相同,都会从 node_modules
中卸载指定的包,并更新 package.json
查看已安装的包 pnpm list npm list 两者都用于查看已安装的依赖,pnpm list
会更高效地显示包信息。
全局安装包 pnpm add -g <package> npm install -g <package> pnpm
npm
都支持全局安装包。
更新依赖 pnpm update npm update pnpm update
会根据 pnpm-lock.yaml
文件更新依赖,npm update
则根据 package.json
来更新依赖。
初始化项目 pnpm init npm init pnpm init
npm init
用于初始化新的 package.json
文件,功能相同。
安装指定版本的包 pnpm add <package>@<version> npm install <package>@<version> 两者都支持安装指定版本的包。
查看 **package.json**
配置的脚本
pnpm run <script> npm run <script> 两者都可以用来运行 package.json
中定义的脚本命令,如启动服务器等。
创建锁文件 pnpm install
(自动生成 pnpm-lock.yaml
)
npm install
(自动生成 package-lock.json
)
pnpm
使用 pnpm-lock.yaml
npm
使用 package-lock.json
,两者的锁文件格式不同。
清理缓存 pnpm store prune npm cache clean --force pnpm
使用 pnpm store prune
来清理缓存,而 npm
使用 npm cache clean
查看全局安装的包 pnpm list -g npm list -g 两者都可以用来查看全局安装的包。
临时执行 pnpm dlx npx 临时下载,执行后不会把它加入项目依赖。

关键差异:

  1. 性能pnpm 相比 npm 通过硬链接和符号链接优化了包管理,它更高效地处理依赖和缓存,减少了磁盘空间的使用。
  2. 锁文件pnpm 使用 pnpm-lock.yaml,而 npm 使用 package-lock.json,这两个文件格式和工作方式不同。
  3. 工作原理pnpm 会将依赖的所有包集中存储在一个地方,并通过硬链接链接到项目中,而 npm 会在每个项目中复制一份完整的依赖包。

总结来说,pnpmnpm 在命令上大致相同,但 pnpm 的设计更加高效,尤其在性能和磁盘空间利用方面,因此在大规模项目中,pnpm 经常被认为是更好的选择。