我爲node.js使用了jsdom包,但我遇到了一個問題。我在我的計算機上修復了我手動編輯/ node_modules/jsdom/lib/jsdom/level2/languages中的源代碼,並且它可以正常工作。但是,現在我想將我的程序發佈到另一臺服務器上。如何使用修改後的npm包部署node.js程序?
處理這個修改後的依賴關係的最好方法是什麼?一般來說,我應該如何處理由npm install修改的依賴關係?
我爲node.js使用了jsdom包,但我遇到了一個問題。我在我的計算機上修復了我手動編輯/ node_modules/jsdom/lib/jsdom/level2/languages中的源代碼,並且它可以正常工作。但是,現在我想將我的程序發佈到另一臺服務器上。如何使用修改後的npm包部署node.js程序?
處理這個修改後的依賴關係的最好方法是什麼?一般來說,我應該如何處理由npm install修改的依賴關係?
那麼,正確的做法是向維護者提交一個補丁,以便它可以固定在上游(長期)。同時,在安裝主包的同時保留修改後的文件,重命名原始文件(mv file.js file.js.ORIG
),然後在您的副本(ln -s ../../../patches/jsdom/level2/languages/file.js file.js
)中進行符號鏈接。
這是一個快速和骯髒的選擇。另一種選擇是使用修改後的源代碼和點NPM來構建新的npm tarball。 npm install
命令可以將本地文件系統路徑導入.tar.gz存檔。那也可以。
如果修復已包含在代碼庫中,但尚未發佈到npm,則可以使用npm安裝tarball而不是註冊的軟件包。 Github爲每個提交提供了一個tarball,只需點擊下載即可。
所以對於jsdom的這個特殊問題。您可以使用下面的命令故宮:
npm install https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab
它也適用於的package.json:
"dependencies" : {
"jsdom" : "https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab"
}
在這裏閱讀更多:https://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab#commitcomment-475293
感謝tmpvar!
當修復處於fork/pullrequest但尚未進入主repo時,這也很有用 – Tobbe
謝謝彼得。此修復程序實際上已經在代碼庫中,但尚未發佈到npm。以下是關於具體細節的更多信息:https://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab#commitcomment-475293我正在使用tmpvar建議的修復程序。即「npm install https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab」。但是,您的建議對於我在原始問題中發佈的信息看起來不錯。 –