[英]Best practice for nodejs deployment - Directly moving node_modules to server or run npm install command
[英]Is it mandatory for each deployment to production for remove node modules and run npm install?
我使用 vuetify (vue)
每次部署到生產是否都必須刪除節點模塊並運行npm install
? 或者只是運行npm run build
?
我有兩個選擇:
選項 1:每次部署,我都直接運行npm run build
選項2:
npm install
npm run build
哪個是最好的選擇?
此命令安裝一個包,以及它所依賴的任何包。 如果包有 package-lock 或 shrinkwrap 文件,依賴項的安裝將由它驅動,如果兩個文件都存在,則 npm-shrinkwrap.json 優先。 請參閱package-lock.json和npm- shrinkwrap 。
如果您在發布項目之前沒有安裝或更新包,則不需要執行npm install
,否則需要執行它以確保生產環境中的依賴包與您本地的依賴包版本一致。
如果您使用像 jenkins 這樣的自動構建部署工具,為方便起見,您可以在每次構建之前執行 install 命令。 沒關系。
想象更多的環境,而不僅僅是生產:
我們可以將npm run build
結果(壓縮的 js)或node_modules 上傳到我們的 git 存儲庫嗎? 答案不是!! . 因此,如果您需要在任何這些環境中運行某個版本的應用程序,則必須執行npm run build
。 這個命令需要經典的npm run install
。 我想這最后一句話,回答你的問題。
假設 1您的客戶端應用程序 (vue) 並不復雜(沒有登錄、沒有會話、沒有注銷等),您可以使用基本的 nginx、apache、 basic-nodejs發布它。
假設 2您可以為docker 私有存儲庫多擁有一台服務器。 另外如果你在google、amazon o azure,這個服務就可以使用了,當然是需要付費的
一方面,使用 docker,您必須只執行一次npm install和npm run build 。 完整的流程是:
如果您的質量保證團隊需要對您的新應用程序執行一些測試,則只需要下載 docker 映像。 如果一切正常,您將進入下一階段(登台或 uat)或生產。 步驟相同:只需下載 docker 鏡像。
在這種情況下,nginx 或 apache 對您沒有幫助,因為它們是簡單的靜態服務器。
您可以使用這樣的最小 nodejs 代碼:
https://github.com/jrichardsz/nodejs-static-pages/blob/master/server.js
添加 /login 、 /logout 等
或者使用我的服務器:
https://github.com/utec/geofrontend-server
它具有 /login、/logout 和其他很酷的功能,例如:您打算如何在您的任何環境中將后端 api url 傳遞給您的 vue 應用程序?。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.