您现在的位置是:首页 >技术交流 >pnpm管理node,管理依赖网站首页技术交流

pnpm管理node,管理依赖

ziyue7575 2024-07-27 00:01:01
简介pnpm管理node,管理依赖

pnpm统一管理node、全局依赖、项目依赖,每个依赖在磁盘只需要下载一次,很好用
PS:nvm也好用,但是切换node就要重新安装全局依赖,而且…少装一个是一个

注意:建议pnpm最低使用node是16

安装pnpm

iwr https://get.pnpm.io/install.ps1 -useb | iex
# 使用github安装,所以可能下载失败,可以多试几次
# 默认使用的是pnpm最新版

安装完之后可以使用 pnpm -v查看安装的版本

若是安装失败,用下面的命令开启权限

开启pnpm权限

  • 管理员身份打开powershell
# 输入
set-executionpolicy remotesigned
#根据提示,输入A,回车

配置安装位置(若是不介意C盘,可以默认)

pnpm setup # 自动设置环境变量
pnpm config set store-dir "D:softwarepnpmnode.pnpm-store"    # pnpm全局仓库路径(类似 .git 仓库)
pnpm config set global-dir "D:softwarepnpmnodepnpm-global"    # pnpm全局安装路径
pnpm config set state-dir "D:softwarepnpmnodepnpm-state-config"    # pnpm创建pnpm-state.json文件的目录
pnpm config set cache-dir "D:softwarepnpmnodecache"    # pnpm全局缓存路径,pnpm全局安装的依赖会安装到这里
# pnpm config set global-bin-dir "D:softwarepnpmnode
odejs"    # 不要设置了, pnpm全局bin路径,设置了下载nodejs会异常

安装node

默认会安装在C:Users用户名AppDataLocalpnpm odejs

# 安装具体某个版本
pnpm env use --global 16.20.0
# 使用最后的稳定版
pnpm env use --global lts

安装异常下面有解决方案

安装nrm 管理源

pnpm install -g nrm

项目配置

每一个项目都要在根目录放一个配置文件.npmrc,内容

shamefully-hoist=true
auto-install-peers=true
strict-peer-dependencies=false

不加的话,pnpm很多依赖不会自动下载,会无法启动

常用命令

# 查看xxx的所有版本
pnpm view xxx versions

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

# 下载包(XXX)
pnpm install XXX
pnpm i XXX
# -S  默认写入dependencies
pnpm add XXX -S
# -D devDependencies
pnpm add XXX -D
# 全局安装
pnpm add XXX -g
# 移除包(XXX)
pnpm remove XXX
# 移除全局包(XXX)
pnpm remove XXX --global
# 更新所有依赖项
pnpm up                
# 更新包(XXX)
pnpm upgrade XXX
# 更新全局包(XXX)
pnpm upgrade XXX --global
# 设置存储路径
pnpm config set store-dir /path/to/.pnpm-store
# 启动(和npm一样即可)
pnpm run dev 或者 pnpm dev

# 查看源
pnpm config get registry
# 切换淘宝源
pnpm config set registry http://registry.npm.taobao.org

异常处理

注意,改了package。json的依赖版本之后,若是install后启动失败,一定要删除node_modules和pnpm-lock.yaml重新install。

The configured global bin directory “xxxx odejs” is not in PATH

image.png
配置了global-bin-dir就会导致这个问题,到C:Users用户名AppDataLocalpnpmconfig,右键编辑rc文件,将里面的global-bin-dir的一行删除就行了

node-sass版本异常

pnpm对版本比较严格,可以看:https://www.npmjs.com/package/node-sass 找到对应的node的合适的sass版本。

其他的依赖也可能出问题,比如我vue和vue-template-compiler版本不一致,项目使用pnpm就无法启动,统一版本就好。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。