2017-10-13 98 views
0

在我的Node.js項目的package.json我有一對夫婦的依賴,這裏有一個例子:npm - 如何部署項目依賴於我們的內部Bitbucket到Azure?

... 
"dependencies": { 
    "lodash": "^4.17.4", 
    "request": "^2.81.0", 
    "request-promise-native": "^1.0.4", 
    "my-module": "git+ssh://[email protected]:7999/sub/my-module.git#v5.0.0" 
}, 
... 

my-module是位於我公司的到位桶的內部模塊並不能提供給公衆。我們的Bitbucket只能從內部網訪問,不能通過互聯網訪問。

現在我想將項目從本地Git存儲庫部署到Azure。我遵循https://docs.microsoft.com/en-us/bot-framework/deploy-bot-local-git的指示,如果我沒有依賴my-module,肯定會成功。在我從內部公司網絡運行npm install時沒有問題,因爲無法訪問我們的Bitbucket存儲庫,所以在部署到Azure時會失敗。

我不能讓我們的Bitbucket從外部訪問,我不能發佈my-module(例如在Github中)。

任何想法如何我可以巧妙地解決這個問題?

編輯:
只需複製和粘貼是不是一種選擇,因爲my-module有頻繁的變化,我希望能夠包括在任何時候一個新的版本。

所以我試着用Git子模塊的幫助:我將my-module作爲子模塊添加到我的項目中,並將其內容放入本地文件夾lib/my-module,我現在在package.json中使用它。在Azure中,我必須禁用Git子模塊的更新(因爲my-module的URL是我們公司的內部回購站,無法由Azure訪問),因此使用SCM_DISABLE_SUBMODULES=1。然後我能夠成功地將我的項目部署到Azure。

:在Azure中現在有文件夾lib/my-module,但它沒有內容(我的本地計算機上,內容是存在的)。我需要做什麼?

回答

0

您可以在package.json中使用file:/foo/bar路徑,並指向放置包的本地文件夾。然後部署您的應用程序和本地文件夾。

請參閱https://stackoverflow.com/a/38417065/46194

+0

謝謝。我用一些Gits submodules的經驗來解決我的問題 - 請看看我上面的編輯。 – Markus

+0

@Markus我不認爲子模塊會幫助你,他們從git服務器獲取文件的方式與'git fetch'一樣。 –

+0

我可能沒有其他選擇,只能通過複製和粘貼來包含'my-module',或者在任何向公衆開放的存儲庫中發佈'my-module'? – Markus

相關問題