為何捐款
API 瀏覽器
升級指南 (Upgrade guide)
NEW!
quasar.config 檔案 (The quasar.config file)
轉換專案至搭配 Vite 的 CLI (Convert project to CLI with Vite)
瀏覽器相容性 (Browser Compatibility)
支援 TypeScript (Supporting TypeScript)
目錄結構 (Directory Structure)
命令列表 (Commands List)
CSS 預處理器 (CSS Preprocessors)
路由 (Routing)
延遲載入 - 程式碼分割 (Lazy Loading - Code Splitting)
處理資源 (Handling Assets)
啟動檔案 (Boot Files)
預先載入功能 (Prefetch Feature)
API 代理 (API Proxying)
處理 Vite (Handling Vite)
處理 process.env (Handling process.env)
使用 Pinia 的狀態管理 (State Management with Pinia)
使用 Vuex 的狀態管理 (State Management with Vuex)
程式碼檢查 (Linter)
測試 & 稽核 (Testing & Auditing)
開發行動應用程式
Ajax 請求
開放開發伺服器給公眾
Quasar CLI with Vite - @quasar/app-vite
部署 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 在專案的設定 > Build & Development Settings 下,將其設定為 dist/spa

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

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

使用 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 目錄。將此資料夾的內容複製到您複製的儲存庫中。

最後一步是在您的儲存庫中新增一個提交並推送到 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 # or npm/pnpm/bun equivalents

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