背景
有时我们会遇到node_modules里面安装的npm包与我们的项目不兼容或者有bug,与其给官方提issue并等待官方把npm包修复,还不如我们自己动手,丰衣足食,在可以本地修复的情况下,可以使用patch-package将修改记录下来,并提交到git仓库,这样其他小伙伴也能安装修复代码,达到同步效果。
过程
- 项目下安装
patch-package
npm包(patch-package安装官方只支持 npm 和 yarn)
npm install -D patch-package
- 进入node_modules中修复npm包
注意: 要改动的包在 package.json 中必须声明确定的版本,不能有~或者^的前缀。 - 执行
npx patch-package
命令
比如我修改的npm库是lodash,修改完后,执行如下命令,这时候,根目录会多出patches目录记录第三方包内容的更改。
npx patch-package lodash
- package.json的scripts中增加命令
{
"scripts": {
"postinstall": "patch-package"
}
}
这样一来,每次安装依赖的时候都会通过 postinstall 脚本自动应用 patches 的修改,解决了团队协作的问题。
- 最后,将修改通过git提交上去,其他人pull代码后,执行npm install,就能同步到patch-package的修改了。
其他:nrm切换npm源
- 安装:
npm install -g nrm
- nrm ls
- npm ---------- https://registry.npmjs.org/
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
- 使用淘宝源
nrm use taobao