pnpm安装和使用

安装
通过脚本安装
windows
iwr https://get.pnpm.io/install.ps1 -useb | iex通过npm安装
npm install -g pnpm通过homebrew安装
brew install pnpm兼容性
以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本。
| Node.js | pnpm 4 | pnpm 5 | pnpm 6 | pnpm 7 |
|---|---|---|---|---|
| Node.js 10 | ✔️ | ✔️ | ❌ | ❌ |
| Node.js 12 | ✔️ | ✔️ | ✔️ | ❌ |
| Node.js 14 | ✔️ | ✔️ | ✔️ | ✔️ |
| Node.js 16 | ?️ | ?️ | ✔️ | ✔️ |
| Node.js 18 | ?️ | ?️ | ✔️ | ✔️ |
设置别名
powershell(windows)
通过命令找到文件位置
echo $profile用记事本管理员身份打开
添加一行
Set-Alias -Name pn -Value pnpm
command(widnwos)
找个地方(建议c盘根目录)新建bat文件输入以下内容
@echo off
doskey pn=pnpm $*卸载
卸载全局安装的软件包
列出所有全局包
pnpm ls删除包
1、使用列出的每个全局包运行
pnpm rm -g <pkg>2、运行以查找全局目录的位置并手动将其删除
pnpm root -g删除 pnpm CLI
如果您使用独立脚本安装 pnpm,那么您应该能够通过删除 pnpm 主目录来卸载 pnpm CLI
rm -rf $PNPM_HOME如果你使用 npm 来安装 pnpm,那么你应该使用 npm 来卸载 pnpm:
npm rm -g pnpm删除全局内容可寻址存储
rm -rf $(pnpm store path)如果在非主磁盘中使用了 pnpm,则必须在使用 pnpm 的每个磁盘中运行上述命令。 pnpm 为每个磁盘创建一个存储。
使用nrm切换npm镜像
nrm依赖的open这个包从9.x开始改成了 Native ESM,不再支持require的方式引入,需要手动锁定下版本,或者手动前往本地安装的nrm包修改const open = import('open');
npm install nrm open@8.4.2 -g使用pnpm管理node版本
在使用pnpm前,我们一般使用nvm,n能模块来管理node版本,现在pnpm自带切换node版本的功能
安装并使用指定版本的nide.js
使用LTS版本
pnpm env use --global lts
pnpm env use --global argon安装node.js v16版本
pnpm env use --global 16安装node.js的预发行版本
pnpm env use --global nightly
pnpm env use --global rc
pnpm env use --global 16.0.0-rc.0
pnpm env use --global rc/14安装最新版本的node.js
pnpm env use --global latest删除指定版本的node.js
示例
pnpm env remove --global 14.0.0选项
--global, -g
这些更改实在整个系统范围内进行的
修改环境变量
将PATH中nodejs环境变量改到pnpm的nodejs处
配置
package.js
engine
您可以指定软件所处理的 Node 和 pnpm 版本:
{
"engines": {
"node": ">=10",
"pnpm": ">=3"
}
}在本地开发期间,pnpm 将始终失败并显示错误消息 如果其版本与字段中指定的版本不匹配。engines
除非用户设置了配置标志(参见.npmrc),否则这 字段仅供参考,仅在包 作为依赖项安装。engine-strict
dependenciesMeta
如果对于本地依赖项将其设置为 true,则包将硬链接到模块目录,而不是符号链接。
例如,在工作区中的以下内容将创建一个符号链接到目录:package.json``button``node_modules``card
{
"name": "card",
"dependencies": {
"button": "workspace:1.0.0"
}
}workspace
pnpm 内置了对单存储库的支持(又名多包存储库, 多项目存储库或整体存储库)。您可以创建一个 工作区,用于将多个项目合并到单个存储库中。
pnpm-workspace.yaml
packages:
- 'packages/*'这将表示packages下的包为工作区内的包
在工作区中引用:
{
"dependencies": {
"foo": "workspace:*",
"bar": "workspace:~",
"qar": "workspace:^",
"zoo": "workspace:^1.5.0"
}
}

