pnpm替代npmyarn,pnpm安装与使用教程

最近用yarn老出现问题,了解并体验了一下pnpm,确实不错。以下是学习记录。

pnpm的优点

  • 快速: pnpm 比替代方案快 2 倍
  • 高效: Node_modules 中的文件是从一个单一的可内容寻址的存储中链接过来的
  • 支持: monorepospnpm 内置支持了单仓多包
  • 严格: pnpm 创建了一个非平铺的 node_modules,因此代码无法访问任意包

pnpm安装与更新

1
npm i -g pnpm

Pnpm命令

查看版本

1
pnpm -v

初始化新项目

1
pnpm init 项目名

添加依赖包

会自动安装最新版本,会覆盖指定版本号

[package]为包的名字,例如安装vite,就是 pnpm add vite

1
pnpm add [package]

一次性添加多个包

1
pnpm add [package] [package] [package]

添加指定版本的包

[version]为版本号,例如安装vite的4.0.0版本 pnpm add vite@4.0.0

1
pnpm add [package]@[version]

安装某个tag(比如beta,next或者latest)

1
pnpm add [package]@[tag]

将依赖项添加到不同依赖项类别

不指定依赖类型默认安装到dependencies里,你也可以指定依赖类型分别添加到 devDependencies、peerDependencies 和 optionalDependencies

1
2
3
pnpm add [package] --dev 或 yarn add [package] -D       // 加到 devDependencies
pnpm add [package] --peer 或 yarn add [package] -P // 加到 peerDependencies
pnpm add [package] --optional 或 yarn add [package] -O // 加到 optionalDependencies

升级依赖包

1
2
3
4
pnpm up                            //更新所有依赖项
pnpm upgrade [package] // 升级到最新版本
pnpm upgrade [package]@[version] // 升级到指定版本
pnpm upgrade [package]@[tag] // 升级到指定tag

移除依赖包

1
2
pnpm remove [package]      // 移除包
pnpm remove 包 --global //移除全局包

安装package.json里的包依赖,并将包及它的所有依赖项保存进yarn.lock

安装所有依赖

1
pnpm 或 pnpm i

安装一个包的单一版本

1
pnpm i --flat

强制重新下载所有包

1
pnpm i --force

只安装生产环境依赖

1
pnpm i --production

发布包

1
pnpm publish

运行脚本

1
pnpm run 

显示某个包的信息

1
pnpm info [package] 

缓存(无效,不建议删除,确实需要删除可以找到存储路径,整个目录删除)

1
2
3
4
pnpm cache
pnpm cache list // 列出已缓存的每个包
pnpm cache dir // 返回全局缓存位置
pnpm cache clean // 清除缓存

设置存储路径,将替换成你要存放的仓库目录,如:/e/文档/.pnpm-store

1
pnpm config set store-dir <global-store-path>

pnpm设置源

查看源

1
pnpm config get registry 

切换淘宝源

1
pnpm config set registry https://registry.npmmirror.com

临时修改

1
pnpm --registry https://registry.npmmirror.com install any-touch

还原

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