背景
有時(shí)我們會(huì)遇到node_modules里面安裝的npm包與我們的項(xiàng)目不兼容或者有bug惠呼,與其給官方提issue并等待官方把npm包修復(fù)漱贱,還不如我們自己動(dòng)手妇垢,豐衣足食,在可以本地修復(fù)的情況下宰衙,可以使用patch-package將修改記錄下來平道,并提交到git倉庫,這樣其他小伙伴也能安裝修復(fù)代碼供炼,達(dá)到同步效果一屋。
過程
- 項(xiàng)目下安裝
patch-package
npm包(patch-package安裝官方只支持 npm 和 yarn)
npm install -D patch-package
- 進(jìn)入node_modules中修復(fù)npm包
注意: 要改動(dòng)的包在 package.json 中必須聲明確定的版本,不能有~或者^的前綴袋哼。 - 執(zhí)行
npx patch-package
命令
比如我修改的npm庫是lodash冀墨,修改完后,執(zhí)行如下命令涛贯,這時(shí)候诽嘉,根目錄會(huì)多出patches目錄記錄第三方包內(nèi)容的更改。
npx patch-package lodash
- package.json的scripts中增加命令
{
"scripts": {
"postinstall": "patch-package"
}
}
這樣一來弟翘,每次安裝依賴的時(shí)候都會(huì)通過 postinstall 腳本自動(dòng)應(yīng)用 patches 的修改虫腋,解決了團(tuán)隊(duì)協(xié)作的問題。
- 最后稀余,將修改通過git提交上去悦冀,其他人pull代碼后,執(zhí)行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