[分享] 修改依賴源碼超省時的補丁套件
目錄 | Contents
起源
因為我去改了 node_modules 裡某個套件的源碼,看了網路上說明為了避免下次拉依賴庫又會被修改回來,所以你可能要自己把修正拉進自己的庫,但修改起來看了有點麻煩,文章內有提到另一個補丁工具,索性就用用看,這工具實在好用,記錄下使用過程,如果有看不懂的地方可以看這篇最下方的參考文章.
安裝 patch-package
1 | npm install patch-package --save-dev |
修正源碼
接著你可以去改 node_modules/xxx/xxx 的檔案
創建補丁
1 | // npx patch-package package-name |
- package-name 就是你依賴的 node_modules/xxx 的名字
- 執行完成會發現生成 patches 文件夾,裡面有修改過的文件 diff 紀錄
部署
- 修改 package.json,新增命令 postinstall
1
2
3"scripts": {
+ "postinstall": "patch-package"
}1
2
3
4
5
6
7
8
9
10+ $npm install
> hexo-site@0.0.0 postinstall xx/blog/minilabmemo.github.io
> patch-package
+ patch-package 6.5.1
+ Applying patches... //下面的檔案進行修改
hexo-insert-toc@1.1.2 ✔
audited 543 packages in 2.279s
實際應用
hexo 主題魔改
之後曾有提過我有針對主題底層更改魔改-theme-主題樣式,後來又備份自己修改的地方,想一想或許可以用這個套件修補.
原本架構
1
2themes/icarus //不會上傳 install from source git clone來的
themes/icarus_fix_record //自己的修改備份紀錄改用 install from NPM
1
2
3
4npm install -S hexo-theme-icarus
專案出現相依庫
"hexo-theme-icarus": "^5.2.1",接著移除掉 themes/icarus 資料夾
原本修改的地方就被恢復成原主題了接著再把我備份的修改紀錄去修改 node_modules/hexo-theme-icarus
1
2
3
4
5themes/icarus_fix_record/include/style/base.styl
themes/icarus_fix_record/include/style/card.styl
themes/icarus_fix_record/include/style/helper.styl
themes/icarus_fix_record/layout/common/article.jsx
...創建補丁
npx patch-package hexo-theme-icarus
- 因為檔案會有點多,所以也可以再加上 –include “.include.“ 讓他針對部分去修改就好
- 完成後去生成的檔案夾確認 diff,這邊也可以記錄你的修改
1
2
3
4
5
6
7
8
9
10
11
12$ npx patch-package hexo-theme-icarus
patch-package 6.5.1
• Creating temporary folder
• Installing hexo-theme-icarus@5.2.1 with npm
• Diffing your files with clean files
✔ Created file patches/hexo-theme-icarus+5.2.1.patch
💡 hexo-theme-icarus is on GitHub! To draft an issue based on your patch run
npx patch-package hexo-theme-icarus --create-issue
$ npx patch-package hexo-theme-icarus --include ".*include.*"
$ npx patch-package hexo-theme-icarus --include ".*(?:include|common).*"
重新安裝確認
你可以刪除相依再次下npm install
確認,但似乎用npm install -S hexo-theme-icarus
是沒有作用的
網路參考文章
修改 nodejs 项目中 node_modules 的代码,不能生效吗?
- 配置 webpack alias 的方法介紹(沒用過)
-
- 更多選項介紹
Photo by Sincerely Media on Unsplash
[分享] 修改依賴源碼超省時的補丁套件