pnpm
pnpm 如何升级一个依赖
比如升级 vitepress:
shell
pnpm up vitepress --latest -r
# 升级所有依赖
pnpm up --latest -r
# 升级到指定版本
pnpm up vitepress@2.0.0-alpha.6 -r其它
shell
# 打印含有被阻止构建脚本的软件包列表。
pnpm ignored-buildsworkspace
shell
pnpm update --workspace [workspace name]
pnpm update --workspace docs清除缓存
shell
pnpm store prune
# 查看缓存路径
pnpm store pathpnpm update
别名:pnpm up.
| Command | Meaning |
|---|---|
pnpm up | 遵循 package.json 指定的范围更新所有的依赖项。如果是 workspace 项目不会更新子 package 的依赖。 |
pnpm up --latest | Updates all dependencies to their latest versions |
pnpm up foo@2 | foo 更新到 v2 上的最新版本 |
pnpm up "@babel/*" | 更新 @babel 范围内的所有依赖项 |
更新所有依赖项,除了 webpack。
pnpm update "\!eslint"
配置项
--recursive, -r
同时在所有子目录中使用 package.json (不包括 node_modules) 运行更新。
shell
pnpm --recursive update
# 将每个包中的 typescript 更新为最新版本
pnpm --recursive update typescript@latest--latest, -L
更新到最新版本。 n
使用 pnpm 的 patch 命令打补丁,安装依赖后自动打上修改的内容
一个简单的 demo:
shell
mkdir patch-demo
cd patch-demo
pnpm init安装ant-design-vue@1.7.8 依赖:
shell
pnpm i ant-design-vue@1.7.8接下来,我们对该库进行自己的一些修改:
shell
# 注意这里要指定对应的版本
pnpm patch ant-design-vue@1.7.8
You can now edit the following folder: pnpm patch-commit /private/var/folders/3c/v35nykz53t11n6gl0gl2kn6w0000gn/T/e07c1fd284b06829e8872915955e71cd然后我们打开生成的这个链接 /private/var/folders/3c/v35nykz53t11n6gl0gl2kn6w0000gn/T/e07c1fd284b06829e8872915955e71cd,在里面修改 ant-design-vue 的代码。
假设我们要在改方法加上一行打印。
js
module.exports = function isOdd(value) {
console.log('patch')
const n = Math.abs(value);
if (!isNumber(n)) {
throw new TypeError('expected a number');
}
if (!Number.isInteger(n)) {
throw new Error('expected an integer');
}
if (!Number.isSafeInteger(n)) {
throw new Error('value exceeds maximum safe integer');
}
return (n % 2) === 1;
};修改完成保存后,执行如下指令:
shell
pnpm patch-commit /private/var/folders/3c/v35nykz53t11n6gl0gl2kn6w0000gn/T/e07c1fd284b06829e8872915955e71cd然后可以看到项目中生成了一个 patches/ant-design-vue.patch 的文件,同时在 package.json 中也增加了如下配置:
json
"pnpm": {
"patchedDependencies": {
"ant-design-vue@1.7.8": "patches/ant-design-vue@1.7.8.patch",
"element-ui@2.15.8": "patches/element-ui@2.15.8.patch"
}
}查看 node_modeles 下的 ant-design-vue@1.7.8 代码,该修改已经加上了,后续别人拿到该项目,重新 pnpm i 也能得到修改后的代码。
注意:
如果使用 window 并且使用 git-bash 的话,文件路径要使用两个 \\ 分割,如:
shell
pnpm patch-commit C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\482a1b2c5aaad6b4abb4d39bab8ef39c\\userpnpm 如果链接一个包
使用 pnpm link <dir>。
dir 就是你想链接的那个包的路径。
比如我有一个项目,我还开发了一个插件,然后我想在项目上测试下我写的插件。
就可以在我的项目下执行:
shell
pnpm link <插件路径>之后就可以使用这个插件提供的一些脚本命令了。