提供商
Analog 支持通过 Nitro 作为其底层服务器引擎,几乎无需额外配置即可部署到许多提供商。您可以在 Nitro 部署文档 中找到更多提供商。
Zerops
Zerops 是 AnalogJS 的官方部署合作伙伴。
Analog 支持通过简单的配置文件将静态和服务器端渲染的应用程序部署到 Zerops。
一个 Zerops 项目可以包含多个 Analog 项目。请参阅 静态 和 服务器端渲染 Analog 应用程序的示例仓库以快速入门。
静态 (SSG) Analog 应用
如果您的项目不支持 SSG,请设置您的项目以进行静态站点生成。
1. 在 Zerops 中创建一个项目
项目和服务可以通过 添加项目 向导添加 或使用 YAML 结构导入:
project:
name: recipe-analog
services:
- hostname: app
type: static
这将创建一个名为 recipe-analog 的项目,并包含一个名为 app 的 Zerops 静态服务。
2. 添加 zerops.yml 配置
要告诉 Zerops 如何构建和运行您的站点,请将 zerops.yml 添加到您的仓库:
zerops:
- setup: app
build:
base: nodejs@20
buildCommands:
- pnpm i
- pnpm build
deployFiles:
- public
- dist/analog/public/~
run:
base: static
3. 触发构建和部署管道
服务器端渲染 (SSR) Analog 应用
如果您的项目尚未准备好 SSR,请设置您的项目以进行服务器端渲染。
1. 在 Zerops 中创建一个项目
项目和服务可以通过 添加项目 向导添加或使用 YAML 结构导入:
project:
name: recipe-analog
services:
- hostname: app
type: nodejs@20
这将创建一个名为 recipe-analog 的项目,并包含一个名为 app 的 Zerops Node.js 服务。
2. 添加 zerops.yml 配置
要告诉 Zerops 如何构建和运行您的站点,请将 zerops.yml 添加到您的仓库:
zerops:
- setup: app
build:
base: nodejs@20
buildCommands:
- pnpm i
- pnpm build
deployFiles:
- public
- node_modules
- dist
run:
base: nodejs@20
ports:
- port: 3000
httpSupport: true
start: node dist/analog/server/index.mjs
3. 触发构建和部署管道
构建和部署您的代码
通过将服务与您的 GitHub / GitLab 仓库连接来触发管道
通过将服务与您的 GitHub / GitLab 仓库连接,您的代码可以在每次提交或添加新标签时自动部署。此连接可以在服务详细信息中设置。
使用 Zerops CLI (zcli) 触发管道
您还可以使用 Zerops CLI 从终端或现有的 CI/CD 手动触发管道。
- 安装 Zerops CLI。
# 直接下载 zcli 二进制文件,
# 使用 https://github.com/zeropsio/zcli/releases
npm i -g @zerops/zcli
-
在 Zerops 应用中打开 设置 > 访问令牌管理 并生成一个新的访问令牌。
-
使用以下命令登录您的访问令牌:
zcli login <token>
- 导航到您的应用程序根目录(
zerops.yml所在位置)并运行以下命令以触发部署:
zcli push
使用 GitHub / Gitlab 触发管道
您还可以查看 Zerops 文档 中的 Github 集成 / Gitlab 集成 以进行 git 集成。
Netlify
Analog 支持通过 Netlify 进行部署,几乎无需额外配置。
部署项目
- Create analog
- Nx
在 Netlify 项目的 Web UI 中的构建设置 中,执行以下操作。
- 将 构建命令 设置为
nx build [your-project-name] - 将 发布目录 设置为
dist/[your-project-name]/analog/public以部署静态资源 - 将 函数目录 设置为
dist/[your-project-name]/analog以部署服务器。
您还可以通过在存储库的根目录中放置一个 netlify.toml 文件来进行配置。以下是一个示例配置。
# 将 "my-analog-app" 替换为您要部署的应用名称
[build]
command = "nx build my-analog-app"
publish = "dist/my-analog-app/analog/public"
functions = "dist/my-analog-app/analog"
Vercel
Analog 支持在 Vercel 上进行部署,无需额外配置。
部署项目
- Create analog
- Nx
默认情况下,部署到 Vercel 时,构建预设会自动处理。
-
创建一个新项目并选择包含代码的存储库。
-
点击“Deploy”。
就这么简单!
为了使其与 Nx 一起工作,我们需要定义要构建的特定应用程序。您可以选择以下方法之一(将 <app> 替换为您的应用名称):
- 在
nx.json中定义defaultProject
{
"defaultProject": "<app>"
}
- 在项目根目录中创建一个
vercel.json文件并定义buildCommand:
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"buildCommand": "nx build <app>"
}
- 在
package.json中定义buildCommand:
{
"scripts": {
"build": "nx build <app>"
}
}
Nx 和 Vercel
当在 Vercel 构建平台上使用 Nx 并重用构建缓存时,如果您在本地构建了它,可能会导致缓存被重用。这可能导致输出被放置在错误的位置。为了解决这个问题,您可以在 vite.config.ts 文件中使用预设作为解决方法。
手动设置预设
在某些情况下,Vercel 可能不会自动加载预设。在这种情况下,您可以执行以下操作之一。
- 将
BUILD_PRESET环境变量设置为vercel。 - 在
vite.config.ts文件中设置预设:
import { defineConfig } from 'vite';
import analog from '@analogjs/platform';
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => ({
/// ...other config
plugins: [
analog({
nitro: {
preset: 'vercel',
},
}),
],
}));
Cloudflare Pages
Analog 支持通过 Cloudflare Pages 进行部署,几乎无需额外配置。
部署到 Cloudflare
要连接您的存储库并自动部署到 Cloudflare:
- 登录到 Cloudflare 仪表板并选择您的帐户。
- 在帐户主页中,选择 Workers & Pages。
- 选择创建应用程序 > Pages > 连接到 Git。
- 将
npm run build输入为Build Command。 - 将
dist/analog/public输入为Build output directory。 - 保留其他默认设置,点击“保存并部署”。
应用程序将在每次推送到存储库时部署到 Cloudflare 的网络。
Nx 和 Cloudflare
对于 Nx 工作区,构建输出位于应用程序名称下。相应地更新 Build output directory。
例如:
构建输出目录:dist/[your-project-name]/analog/public
要在本地测试构建,请运行以下命令:
BUILD_PRESET=cloudflare-pages npx nx build [your-project-name]
使用 Wrangler 本地运行应用程序
您还可以在本地预览在 Cloudflare 上运行的应用程序:
- 在运行构建之前将环境变量
BUILD_PRESET设置为cloudflare-pages
BUILD_PRESET=cloudflare-pages npm run build
- 使用
wranglerCLI 在本地运行应用程序
npx wrangler pages dev ./dist/analog/public
Firebase 应用托管
Analog 支持 Firebase 应用托管,无需额外配置。
注意:您需要使用 Blaze 计划 才能使用 Firebase 应用托管部署 Analog 应用程序。
请按照 入门指南 将您的 GitHub 存储库连接到 Firebase 应用托管。
Firebase 托管
Analog 支持使用 Cloud Functions 和 Firebase 应用托管 的 Firebase 托管,无需额外配置。
请参阅配置了 Firebase 的 示例仓库
注意:您需要使用 Blaze 计划 才能使用 Analog 和 Cloud Functions。
如果您的根目录中尚未有 firebase.json 文件,Analog 会在您第一次运行时创建一个 。在此文件中,您需要将 <your_project_id> 替换为您的 Firebase 项目 ID。
此文件应提交到版本控制中。如果您不想手动将项目 ID 传递给 firebase 命令(使用 --project <your_project_id>),您还可以创建一个 .firebaserc 文件:
{
"projects": {
"default": "<your_project_id>"
}
}