为什么捐赠
API 浏览器
Quasar CLI with Vite - @quasar/app-vite
部署 SPA

存在许多服务可以轻松地部署应用程序。列出所有这些服务是不可能的,因此我们将重点关注一般的部署过程以及一些常见服务的具体内容。

如果缺少您喜欢的部署工具,请随时在 GitHub 上创建拉取请求将其添加到列表中。

一般部署

部署 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": "/" }
  ]
}

使用 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 远程

$ 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 上部署

要在 GitHub Pages 上部署您的 Quasar 应用程序,第一步是在 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

然后将一个 deploy 脚本命令添加到您的 package.json

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

将您的 GitHub Pages 存储库添加为名为 gh-pages 的远程

$ git remote add gh-pages [email protected]:<username>/<username>.github.io.git

现在您可以使用以下命令构建和部署您的应用程序

$ quasar build
$ yarn deploy # or npm/pnpm/bun equivalents

这将把您的构建目录的内容推送到 GitHub Pages 存储库上的主分支。