使用 Deno 部署你的 Astro 站点
你可以使用 Deno 来部署静态或按需渲染的 Astro 站点,既可以选择自己的服务器,也可以选择 Deno Deploy——这是一个全球分布式系统,能够在边缘节点运行 JavaScript、TypeScript 和 WebAssembly。
本指南包括使用 Deno 在自己的服务器上运行 Astro 站点,以及通过 GitHub Actions 或 Deno Deploy CLI 部署到 Deno Deploy 的介绍。
要求
本指南假设你已经安装了 Deno。
项目配置
你的 Astro 项目可以是静态站点或按需渲染的站点。
静态站点
你的 Astro 项目默认是一个静态站点。你不需要任何额外的配置就可以使用 Deno 部署一个静态 Astro 站点,或将其部署到 Deno Deploy。
按需渲染适配器
要在 Astro 项目中启用基于 Deno 的按需渲染,并部署到 Deno Deploy:
使用你喜欢的包管理器将
@deno/astro-adapter适配器 安装到你的项目依赖中:npm install @deno/astro-adapterpnpm install @deno/astro-adapteryarn add @deno/astro-adapter使用下面的修改来更新你的
astro.config.mjs项目配置文件。// astro.config.mjs import { defineConfig } from 'astro/config'; import deno from '@deno/astro-adapter'; export default defineConfig({ output: 'server', adapter: deno(), });使用以下修改来更新
package.json中的preview脚本。// package.json { // ... "scripts": { "dev": "astro dev", "start": "astro dev", "build": "astro build", "preview": "astro preview" "preview": "deno run --allow-net --allow-read --allow-env ./dist/server/entry.mjs" } }你现在可以使用以下命令通过 Deno 在本地预览你生产环境的 Astro 站点。
npm run previewpnpm run previewyarn run preview
如何部署
你可以在自己的服务器上运行 Astro 站点,也可以通过 GitHub Actions 或使用 Deno Deploy 的 CLI(命令行界面)部署到 Deno Deploy。
使用自己的服务器
复制你的项目到服务器上。
使用你喜欢的包管理器安装项目依赖:
npm installpnpm installyarn使用你喜欢的包管理器构建你的 Astro 网站:
npm run buildpnpm run buildyarn run build使用以下命令启动你的应用:
deno run -A jsr:@std/http/file-server distdeno run -A ./dist/server/entry.mjs
使用 GitHub Actions 进行部署
如果你的项目存储在 GitHub 上,Deno Deploy 网站 将指导你设置 GitHub Actions 来部署你的 Astro 站点。
将你的代码推送到公开或私有的 GitHub 存储仓库。
使用你的 GitHub 账号登录 Deno Deploy,然后单击 New Project。
选择你的存储仓库和要部署的分支,并选择 GitHub Action 模式。(你的 Astro 站点需要一个构建步骤,不能使用 Automatic 模式。)
在你的 Astro 项目中,创建一个名为
.github/workflows/deploy.yml的新文件,并粘贴下面的 YAML 内容。这类似于 Deno Deploy 提供的 YAML,但还包括你的 Astro 站点所需的其他步骤。--- // .github/workflows/deploy.yml --- name: Deploy on: [push] jobs: deploy: name: Deploy runs-on: ubuntu-latest permissions: id-token: write # 用于 Deno Deploy 身份认证 contents: read # 用于克隆仓库 steps: - name: Clone repository uses: actions/checkout@v4 # 没有使用 npm?将 `npm ci` 更改为 `yarn install` 或 `pnpm i` - name: Install dependencies run: npm ci # 没有使用 npm?将 `npm run build` 更改为 `yarn build` 或 `pnpm run build` - name: Build Astro run: npm run build - name: Upload to Deno Deploy uses: denoland/deployctl@v1 with: project: my-deno-project # TODO:替换为 Deno Deploy 项目名称 entrypoint: jsr:@std/http/file-server root: dist--- // .github/workflows/deploy.yml --- name: Deploy on: [push] jobs: deploy: name: Deploy runs-on: ubuntu-latest permissions: id-token: write # 用于 Deno Deploy 身份认证 contents: read # 用于克隆仓库 steps: - name: Clone repository uses: actions/checkout@v4 # 没有使用 npm?将 `npm ci` 更改为 `yarn install` 或 `pnpm i` - name: Install dependencies run: npm ci # 没有使用 npm?将 `npm run build` 更改为 `yarn build` 或 `pnpm run build` - name: Build Astro run: npm run build - name: Upload to Deno Deploy uses: denoland/deployctl@v1 with: project: my-deno-project # TODO:替换为 Deno Deploy 项目名称 entrypoint: dist/server/entry.mjs提交此 YAML 文件,然后推送到你配置的部署分支后,将会自动开始部署!
你可以在 GitHub 存储库页面上的 "Actions" 选项卡上,或在 Deno Deploy 上跟查看部署进度。
使用 CLI 进行部署
安装 Deno Deploy CLI。
deno install -gArf jsr:@deno/deployctl使用你喜欢的包管理器构建你的 Astro 站点:
npm run buildpnpm run buildyarn run build运行
deployctl进行部署!cd dist && deployctl deploy jsr:@std/http/file-serverdeployctl deploy ./dist/server/entry.mjs你可以在 Deno Deploy 上跟踪所有部署。
(可选) 为了将构建和部署简化为一个命令,可以在
package.json中添加一个deploy-deno脚本。// package.json { // ... "scripts": { "dev": "astro dev", "start": "astro dev", "build": "astro build", "preview": "astro preview", "deno-deploy": "npm run build && cd dist && deployctl deploy jsr:@std/http/file-server" } }// package.json { // ... "scripts": { "dev": "astro dev", "start": "astro dev", "build": "astro build", "preview": "deno run --allow-net --allow-read --allow-env ./dist/server/entry.mjs", "deno-deploy": "npm run build && deployctl deploy ./dist/server/entry.mjs" } }然后你可以使用以下命令一步构建和部署你的 Astro 站点。
npm run deno-deploy