2011-07-10 85 views
3

我爲node.js使用了jsdom包,但我遇到了一個問題。我在我的計算機上修復了我手動編輯/ node_modules/jsdom/lib/jsdom/level2/languages中的源代碼,並且它可以正常工作。但是,現在我想將我的程序發佈到另一臺服務器上。如何使用修改後的npm包部署node.js程序?

處理這個修改後的依賴關係的最好方法是什麼?一般來說,我應該如何處理由npm install修改的依賴關係?

回答

4

那麼,正確的做法是向維護者提交一個補丁,以便它可以固定在上游(長期)。同時,在安裝主包的同時保留修改後的文件,重命名原始文件(mv file.js file.js.ORIG),然後在您的副本(ln -s ../../../patches/jsdom/level2/languages/file.js file.js)中進行符號鏈接。

這是一個快速和骯髒的選擇。另一種選擇是使用修改後的源代碼和點NPM來構建新的npm tarball。 npm install命令可以將本地文件系統路徑導入.tar.gz存檔。那也可以。

+0

謝謝彼得。此修復程序實際上已經在代碼庫中,但尚未發佈到npm。以下是關於具體細節的更多信息:https://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab#commitcomment-475293我正在使用tmpvar建議的修復程序。即「npm install https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab」。但是,您的建議對於我在原始問題中發佈的信息看起來不錯。 –

3

如果修復已包含在代碼庫中,但尚未發佈到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!

+0

當修復處於fork/pullrequest但尚未進入主repo時,這也很有用 – Tobbe

相關問題