2016-08-03 122 views
0

我的公司有專用作用域npm模塊,即以@mycompanyscope/mymodule開頭的模塊。通過默認設置在故宮所有範圍的模塊都是私人所以你必須首先登錄之前發佈如何在Microsoft Azure網站上安裝npm作用域模塊

npm login 
Username:myusername 
Password:********** 
npm publish 

作用域模塊必須具備的使用性能name與在package.json一個範圍:

{ 
    "name": "@mycompanyscope/mymodule" 
} 

private關鍵必須刪除。

只要你登錄你在$HOME文件夾獲取在.npmrc文件token,就是喜歡

//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000 
scope=mycompanyscope 

此時一切都正確設置,以publishinstall在這臺機器。如果您授予其他用戶的訪問權限,他們可以在他們的機器上執行npm login並從中獲取令牌。

問題出現在服務器端,具體取決於您的服務器。在Heroku上,它應該像解釋here一樣工作。

我的服務器環境是Azure網站。根據一些文檔,您應該在部署階段將您的.npmrc文件上傳到Azure,如果我有辦法爲該計算機獲取令牌,那麼這將非常棒。 如果我嘗試登錄到Kudu PowerShell,事實是,我只是無法登錄,登錄過程掛起,在一些點:

Kudu Remote Execution Console 
Type 'exit' then hit 'enter' to get a new powershell process. 
Type 'cls' to clear the console 

PS D:\home> npm login 
Username: mycompany 
Password: ********* 
Email: (this IS public) [email protected] 

,使我無法生成從本機的任何標記。那麼如何在這裏授予訪問權限以讓npm install正確運行專用範圍模塊?

[更新] 多虧了答案下面我就能夠部署NPM範圍的模塊(@ mycompanyscope/Mymodule中)到Azure網站,創建.npmrc文件在項目的根文件夾(其中package.json是)然後寫在那裏的npm login後獲得的令牌,並添加registrynpmjs.org註冊表:

//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000 
scope=mycompanyscope 
@mycompanyscope:registry=https://registry.npmjs.org/ 

回答

1

您是否嘗試過npm login在本地計算機上您的私人NPM註冊表,生成一個.npmrc FIL e在您的node.js應用程序中,然後使用您的應用程序部署到Azure Web App。

詳情請參閱https://blog.maartenballiauw.be/post/2015/10/13/working-with-a-private-npm-registry-in-azure-web-apps.html

任何更新或進一步的擔憂,請隨時讓我知道。

+0

感謝您的建議。您提到的解決方案是使用'myget'來託管'npm私人註冊表',以便您可以將它添加到'.npmrc'文件中,例如'npm install --save --registry https://www.myget.org/ F/demo-site/npm /'但我使用的是'npmjs.com'專用模塊,並且我沒有發現任何爲我的'.npmrc'添加註冊表的例子。 – loretoparisi

+1

與之相同,當您運行命令'npm login'時,默認的註冊表url是'registry.npmjs.org'。並根據https://www.npmjs上的描述。com/settings/tokens,你可以手動創建'.npmrc'設置auth令牌在這個頁面中,讓你的Azure Web Apps環境下載你的私有模塊。 –

+0

我確認這是解決方案。謝謝。我已經更新了這個問題。 – loretoparisi