為何捐款
API 瀏覽器
升級指南
NEW!
quasar.config 檔案
轉換為使用 Webpack 的 CLI
瀏覽器相容性
支援 TypeScript
目錄結構
命令列表
CSS 預處理器
路由
延遲載入 - 程式碼分割
處理資源
啟動檔案
預取功能
API 代理
處理 Webpack
處理 process.env
使用 Pinia 的狀態管理
使用 Vuex 的狀態管理
Linter
測試與稽核
開發行動應用程式
Ajax 請求
將開發伺服器對外公開
Quasar CLI with Webpack - @quasar/app-webpack
部署 SPA

有許多服務可以輕鬆部署應用程式。列出所有服務是不可能的,因此我們將重點放在一般部署流程以及一些常見服務的具體細節。

如果您找不到您喜歡的部署工具,請隨時在 GitHub 上建立 pull request 將其新增到列表中。

一般部署

部署 Quasar SPA 的第一步始終是建置一個適用於生產環境的檔案包,這會移除開發語句並縮小您的原始碼。

若要產生這樣的建置,請使用 Quasar CLI 與以下命令

$ quasar build

此命令將以 SPA 模式建置您的專案,並將您適用於生產環境的檔案包輸出到新建立的 /dist/spa 資料夾。

為了提供您的生產檔案,*必須*使用 Web 伺服器,以便透過 http(s):// 協定提供服務。單純從瀏覽器中開啟 index.html 檔案將無法運作,因為這會改為使用 file:// 協定。

常見的 Web 伺服器選擇有 nginxCaddyApacheExpress;但您應該可以使用任何您想要的 Web 伺服器。

Web 伺服器不需要特殊設定 (除非您在 /quasar.config 檔案中以 “history” 模式建置 Vue Router)。主要要求是能夠從目錄提供靜態檔案,因此請查閱您的 Web 伺服器文件,以了解如何設定靜態檔案服務。

nginx 的範例設定可能如下所示

server {
    listen 80 http2;
    server_name quasar.myapp.com;

    root /home/user/quasar.myapp.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/quasar.myapp.com-error.log error;

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

重要的託管配置

重要的是,您不要允許瀏覽器快取 index.html 檔案。因為否則對此檔案或您的應用程式的更新可能會在從快取載入 index.html 的瀏覽器中遺漏。

這就是為什麼您必須始終確保透過您的託管服務將 "Cache-Control": "no-cache" 新增到 index.html 檔案的標頭中。

作為 Google Firebase 如何完成此操作的範例,您會將以下內容新增到 firebase.json 配置中

{
  "hosting": {
    "headers": [
      {
        "source": "/**",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache, no-store, must-revalidate"
          }
        ]
      },
      {
        "source": "**/*.@(jpg|jpeg|gif|png|svg|webp|js|css|eot|otf|ttf|ttc|woff|woff2|font.css)",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "max-age=604800"
          }
        ]
      }
    ]
  }
}

使用 Vercel 部署

使用 Vercel 部署您的 Quasar 應用程式非常容易。您所要做的就是下載 vercel-cli 並執行以下命令登入

$ vercel login

然後繼續使用「一般部署」章節中描述的步驟建置您的 Quasar 應用程式。

建置完成後,將目錄變更為您的部署根目錄 (範例:/dist/spa) 並執行

# from /dist/spa (or your distDir)
$ vercel

Vercel CLI 現在應該顯示有關您部署的資訊,例如 URL。就這樣。您完成了。

Vercel 配置提示

您應該考慮為您的專案新增一些額外的配置。

  • 重要提示:Vercel 期望建置結果位於 /public 目錄中,而 *Quasar* 預設將其放在 /dist/spa 中,因此您需要覆寫 Vercel 專案中的 Output Directory。透過 Vercel Web UI 在您的專案設定 > 建置和開發設定下,將其設定為 dist/spa

  • 由於 Vercel 期望定義 *build* 腳本,您可以在 package.json 中新增以下腳本

{
    ..
    "scripts": {
      ...
      "build": "quasar build",
      "deploy": "vercel"
    }
  }
  • 為了支援已部署應用程式中的 SPA 路由,請考慮在您的根資料夾中新增 vercel.json 檔案
{
  "routes": [
    { "handle": "filesystem" },
    { "src": "/.*", "dest": "/index.html" }
  ]
}

使用 Heroku 部署

很遺憾,Heroku 預設不支援靜態網站。不過別擔心,我們只需要在專案中新增一個 HTTP 伺服器,Heroku 就能託管我們的 Quasar 應用程式了。

在這個範例中,我們將使用 Express 來建立一個 Heroku 可以使用的最小伺服器。

首先,我們需要在專案中安裝必要的依賴套件


$ yarn add express serve-static connect-history-api-fallback

現在我們已經安裝了必要的依賴套件,可以新增我們的伺服器了。在專案的根目錄中建立一個名為 server.js 的檔案。

const
  express = require('express'),
  serveStatic = require('serve-static'),
  history = require('connect-history-api-fallback'),
  port = process.env.PORT || 5000

const app = express()

app.use(history())
app.use(serveStatic(__dirname + '/dist/spa'))
app.listen(port)

Heroku 假設有一組可用的 npm 指令稿,所以我們必須修改我們的 package.json,並在 script 區段下新增以下內容

"build": "quasar build",
"start": "node server.js",
"heroku-postbuild": "yarn && yarn build"

現在是時候在 Heroku 上建立一個應用程式,執行

$ heroku create

並使用以下指令部署到 Heroku

$ git init
$ heroku git:remote -a <heroku app name>

$ git add .
$ git commit -am "make it better"
$ git push heroku master

對於現有的 Git 儲存庫,只需新增 heroku remote

$ heroku git:remote -a <heroku app name>

使用 Surge 部署

Surge 是一個用於託管和部署靜態網站的熱門工具。

如果您想使用 Surge 部署您的應用程式,您首先需要安裝 Surge CLI 工具

$ npm install -g surge

接下來,我們將使用 Quasar CLI 來建置我們的應用程式

$ quasar build

現在我們可以透過呼叫以下指令使用 Surge 部署我們的應用程式

$ surge dist/spa

現在您的應用程式應該已成功使用 Surge 部署。您應該可以將本指南應用於任何其他靜態網站部署工具。

部署到 GitHub Pages

若要將您的 Quasar 應用程式部署到 GitHub Pages,第一步是在 GitHub 上建立一個特殊的儲存庫,名稱為 <username>.github.io。將此儲存庫複製到您的本機。

接下來,您需要像「一般部署章節」中描述的那樣建置您的 Quasar 應用程式。這將產生一個 /dist/spa 目錄。將此資料夾的內容複製到您複製的儲存庫。

最後一步是在您的儲存庫中新增 commit 並推送到 GitHub。稍待片刻後,您應該可以透過 https://<username>.github.io/ 存取您的 Quasar 應用程式。

為 GitHub Pages 新增自訂網域

請參閱 GitHub Pages 指南,以深入了解如何設定自訂網域。

使用 push-dir 自動部署到 GitHub Pages

手動將所有檔案複製到您的 GitHub Pages 儲存庫可能是一項繁瑣的任務。這個步驟可以使用 push-dir 套件來自動化。

首先,使用以下指令安裝套件


$ yarn add --dev push-dir

然後在您的 package.json 中新增一個 deploy 指令稿命令

"scripts": {
  "deploy": "push-dir --dir=dist/spa --remote=gh-pages --branch=master"
}

將您的 GitHub Pages 儲存庫新增為名為 gh-pages 的 remote

$ git remote add gh-pages git@github.com:<username>/<username>.github.io.git

現在您可以使用以下指令建置和部署您的應用程式

$ quasar build
$ yarn deploy

這會將您的建置目錄內容推送到您的 GitHub Pages 儲存庫的 master 分支。