簡體   English   中英

每次部署到生產是否都必須刪除節點模塊並運行 npm install?

[英]Is it mandatory for each deployment to production for remove node modules and run npm install?

我使用 vuetify (vue)

每次部署到生產是否都必須刪除節點模塊並運行npm install 或者只是運行npm run build

我有兩個選擇:

  1. 選項 1:每次部署,我都直接運行npm run build

  2. 選項2:

    • 刪除dist文件夾的內容
    • 刪除 node_modules 文件夾
    • npm install
    • npm run build

哪個是最好的選擇?

安裝

此命令安裝一個包,以及它所依賴的任何包。 如果包有 package-lock 或 shrinkwrap 文件,依賴項的安裝將由它驅動,如果兩個文件都存在,則 npm-shrinkwrap.json 優先。 請參閱package-lock.jsonnpm- shrinkwrap

如果您在發布項目之前沒有安裝或更新包,則不需要執行npm install ,否則需要執行它以確保生產環境中的依賴包與您本地的依賴包版本一致。

如果您使用像 jenkins 這樣的自動構建部署工具,為方便起見,您可以在每次構建之前執行 install 命令。 沒關系。

想象更多的環境,而不僅僅是生產:

  • 發展
  • 測試1
  • 分期
  • uat
  • 生產

我們可以將npm run build結果(壓縮的 js)或node_modules 上傳到我們的 git 存儲庫嗎? 答案不是!! . 因此,如果您需要在任何這些環境中運行某個版本的應用程序,則必須執行npm run build 這個命令需要經典的npm run install 我想這最后一句話,回答你的問題。

(建議) Docker 來救援

假設 1您的客戶端應用程序 (vue) 並不復雜(沒有登錄、沒有會話、沒有注銷等),您可以使用基本的 nginx、apache、 basic-nodejs發布它。

假設 2您可以為docker 私有存儲庫多擁有一台服務器。 另外如果你在google、amazon o azure,這個服務就可以使用了,當然是需要付費的

一方面,使用 docker,您必須只執行一次npm installnpm run build 完整的流程是:

  • 開發人員將一些更改推送到 git 存儲庫
  • 手動或自動啟動 docker build。
  • Dockerfile 中,執行npm installnpm run build 還配置了一個帶有 nodejs(示例)的最小服務器,指向您構建的資產
  • 您的新 docker 鏡像已上傳到您的docker 私有存儲庫
  • 就這樣

如果您的質量保證團隊需要對您的新應用程序執行一些測試,則只需要下載 docker 映像。 如果一切正常,您將進入下一階段(登台或 uat)或生產。 步驟相同:只需下載 docker 鏡像。

優化

  • 使用docker stage拆分構建和啟動步驟
  • 如果您的應用程序沒有復雜的流程(無登錄、無會話、無注銷等),請使用簡單的nginx替換節點基本服務器

我需要登錄和注銷

在這種情況下,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM