修改第三方依赖
patch-package
我们可以使用patch-package
这个库来解决这类问题。一方面,它能记录第三方库代码的改动,另一方面也能将改动同步到团队每个成员。
根目录会多出patches
目录记录第三方包内容的更改,随后我们在package.json
的scripts
中增加如下内容:
json
npm i @milahu/patch-package -D
{
"scripts": {
// 省略其它 script
"postinstall": "patch-package"
}
}
这样一来,每次安装依赖的时候都会通过 postinstall
脚本自动应用 patches 的修改,解决了团队协作的问题。
注意
要改动的包在 package.json 中必须声明确定的版本,不能有 ~
或者 ^
的前缀。 在pnpm管理下,无法使用.
pnpm patch
- 先使用pnpm patch xxx@xxx命令,生成修改该包的一个临时路径,我们可以使用--edit-dir xxx来自定义路径。 会在
node_modules/.pnpm_patches
路径下生成改npm包
bash
pnpm patch lodash-es
# node_modules/.pnpm_patches/lodash-es@4.17.21
- 修改代码
- 提交代码
bash
pnpm patch-commit '/Users/zhangweijie/2025/react-vite-demo/node_modules/.pnpm_patches/lodash-es@4.17.21'
修改后文件变更
仓库会有如下几个文件的变更
- pnpm-lock.yaml
yaml
patchedDependencies:
lodash-es:
hash: 7ff9a5473857cdaff39bab5711fe59dd7ba83a798e5a9e7686328fa14dcc076b
path: patches/lodash-es.patch
- pnpm-workspace.yaml
yaml
patchedDependencies:
lodash-es: patches/lodash-es.patch
- patches/lodash-es.patch
diff --git a/add.js b/add.js
index b17f10771dbd75557caa00bd9705498d58f91686..efe432e2589860497da8d3893613a54980e9db4b 100644
--- a/add.js
+++ b/add.js
@@ -15,8 +15,8 @@ import createMathOperation from './_createMathOperation.js';
* _.add(6, 4);
* // => 10
*/
-var add = createMathOperation(function(augend, addend) {
- return augend + addend;
+const add = createMathOperation(function(augend, addend) {
+ return augend + addend+ Math.random();
}, 0);
export default add;