假設我有一個 Node.js 應用程式,我們稱之為patched-app. 這個應用程式是一個簡單的應用程式,它使用提示同步來請求用戶輸入,然后用它做一些事情。
所以我們創建一個檔案夾patched-app并用npm init. 然后我們運行npm i prompt-sync并創建一個名為index.jswhere my code will be 的新檔案。為了讓事情變得更有趣,我還將在這里創建一個 git 存盤庫,結果如下:
---patched-app
| | .gitattributes
| | .gitattributes
| | .gitignore
| | index.js
| | package-lock.json
| | package.json
| |
| ---node_modules
| | | .package-lock.json
| | |
| | ---ansi-regex
| | | index.js
| | | license
| | | package.json
| | | readme.md
| | |
| | ---prompt-sync
| | | index.js
| | | LICENSE
| | | package.json
| | | README.md
| | | test.js
| | |
| | \---strip-ansi
| | index.d.ts
| | index.js
| | license
| | package.json
| | readme.md
| \---.git
| <<git stuff>>
現在這里的問題是我不喜歡這個prompt-sync包的東西,所以我想根據node_modules/prompt-sync/index.js自己的喜好編輯和更改它。我不一定要創建一個全新的模塊,例如prompt-sync-swiffy(或者我?),因為我的更改足夠小,所以我不必為 下載任何新包prompt-sync,所以我對現有的依賴關系很好ansi-regex和strip-ansi。
我可以打開node_modules/prompt-sync/index.js,編輯它并完成 - 這就是我迄今為止一直在做的事情,因為我不知道更好。盡管如此,我已經認識到至少三個主要問題:
- 我無法再更新
prompt-sync,否則我可能會丟失所做的更改(丟失!== 只是破壞了我修補的更改) - 我基本上不能運行任何包命令,例如
npm audit fix等,因為這些命令也可能會覆寫我的更改 - 如果我想將我的專案放在 git 存盤庫中,這根本不起作用,因為我顯然會添加
node_modules到.gitignore并且如果有人要拉我的存盤庫并運行npm install,它會prompt-sync在沒有我更改的情況下安裝
我也不一定要分叉prompt-sync和/或創建一個新的“官方”NPM 包。我想要的是一種允許我或其他任何人npm install正常運行的方法,同時以某種方式將我的模塊補丁保存在本地,例如有一個module_patches不會被存盤庫忽略的檔案夾。
如果更新版本的prompt-sync補丁破壞了我的補丁也沒關系。那將由我來更新補丁或使用鎖定的prompt-sync.
那么我的選擇是什么?
uj5u.com熱心網友回復:
修補 NPM 包的一個好方法是使用patch-package。它將自動為您的更改創建補丁檔案并將它們應用到 postinstall 掛鉤中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/498288.html
