有时使用了某个第三方库,可是它有些问题,我们不得不修改它的源码。
我们可能不方便给原作者提 Pull Request,因为他们可能不愿意接受我们的更改。又或者原作者无法及时发布新版本。
种种原因,我们只有去修改 node_modules 目录下的文件。
可是当我们执行yarn install
或yarn add
时,原先的修改会丢失。
有没有办法让我们可以在yarn install
或yarn add
时,自动把修改的源码加载进来?
推荐使用 patch-packageopen
安装
yarn add patch-package postinstall-postinstall
大多数时候,当你执行yarn add
、yarn remove
或yarn install
时,Yarn 会用原始的模块完全取代你的 node_modules 的内容。 patch-package 使用postinstall
钩子按照你的要求来修改这些原始模块。
Yarn 只在yarn install
和yarn add
之后运行postinstall
钩子,但不包括在yarn remove
之后。postinstall-postinstall 包用来确保你的postinstall
钩子在yarn remove
后也能被执行。
配置scripts
,确保每次执行yarn install
或者yarn add
之后,都会自动执行patch-package
:
// package.json"scripts": {"postinstall": "patch-package",}
使用
首先对你的 node_modules 文件夹中的某个包的文件进行修改,例如js文件注释或者改动。运行
yarn patch-package react-native-system-setting
会在根目录下,创建了一个 patches 文件夹,里面有一个补丁文件,记录你的修改。
这样就不怕在更新的时候,修改丢失了。