使用 Deno 部署你的 Astro 网站
你可以使用 Deno 部署静态或按需渲染的 Astro 网站,既可以部署在你自己的服务器上,也可以部署到 Deno Deploy,这是一个在全球边缘运行 JavaScript、TypeScript 和 WebAssembly 的分布式系统。
本指南包含在您自己的服务器上使用 Deno 运行 Astro 网站的说明,以及通过 GitHub Actions 或 Deno Deploy CLI 部署到 Deno Deploy 的说明。
先决条件
名为“先决条件”的部分本指南假定你已经安装了 Deno。
项目配置
名为“项目配置”的部分你的 Astro 项目可以部署为静态网站,也可以部署为按需渲染的网站。
静态站点
名为“静态网站”的部分你的 Astro 项目默认是静态网站。你无需任何额外配置即可使用 Deno 或 Deno Deploy 部署静态 Astro 网站。
按需渲染适配器
名为“按需渲染适配器”的部分要在你的 Astro 项目中使用 Deno 启用按需渲染,并部署到 Deno Deploy
-
使用你偏好的包管理器,将
@deno/astro-adapter
适配器安装到你项目的依赖中终端窗口 npm install @deno/astro-adapter终端窗口 pnpm install @deno/astro-adapter终端窗口 yarn 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 preview终端窗口 pnpm run preview终端窗口 yarn run preview
如何部署
名为“如何部署”的部分你可以在自己的服务器上运行 Astro 网站,或者通过 GitHub Actions 或使用 Deno Deploy 的 CLI(命令行界面)部署到 Deno Deploy。
在你自己的服务器上
名为“在你自己的服务器上”的部分-
将你的项目复制到你的服务器上。
-
使用你偏好的包管理器安装项目依赖
终端窗口 npm install终端窗口 pnpm install终端窗口 yarn -
使用你偏好的包管理器构建你的 Astro 网站
终端窗口 npm run build终端窗口 pnpm run build终端窗口 yarn run build -
使用以下命令启动你的应用程序
终端窗口 deno run -A jsr:@std/http/file-server dist终端窗口 deno run -A ./dist/server/entry.mjs
GitHub Actions 部署
名为“GitHub Actions 部署”的部分如果你的项目存储在 GitHub 上,Deno Deploy 网站将引导你设置 GitHub Actions 来部署你的 Astro 网站。
-
将你的代码推送到一个公共或私有的 GitHub 仓库。
-
使用你的 GitHub 帐户登录 Deno Deploy,然后点击 New Project。
-
选择你的仓库、你想要部署的分支,并选择 GitHub Action 模式。(你的 Astro 网站需要一个构建步骤,不能使用自动模式。)
-
在你的 Astro 项目中,在
.github/workflows/deploy.yml
位置创建一个新文件,并粘贴下面的 YAML。这与 Deno Deploy 提供的 YAML 类似,但增加了你的 Astro 网站所需的额外步骤。.github/workflows/deploy.yml name: Deployon: [push]jobs:deploy:name: Deployruns-on: ubuntu-latestpermissions:id-token: write # Needed for auth with Deno Deploycontents: read # Needed to clone the repositorysteps:- name: Clone repositoryuses: actions/checkout@v4# Not using npm? Change `npm ci` to `yarn install` or `pnpm i`- name: Install dependenciesrun: npm ci# Not using npm? Change `npm run build` to `yarn build` or `pnpm run build`- name: Build Astrorun: npm run build- name: Upload to Deno Deployuses: denoland/deployctl@v1with:project: my-deno-project # TODO: replace with Deno Deploy project nameentrypoint: jsr:@std/http/file-serverroot: dist.github/workflows/deploy.yml name: Deployon: [push]jobs:deploy:name: Deployruns-on: ubuntu-latestpermissions:id-token: write # Needed for auth with Deno Deploycontents: read # Needed to clone the repositorysteps:- name: Clone repositoryuses: actions/checkout@v4# Not using npm? Change `npm ci` to `yarn install` or `pnpm i`- name: Install dependenciesrun: npm ci# Not using npm? Change `npm run build` to `yarn build` or `pnpm run build`- name: Build Astrorun: npm run build- name: Upload to Deno Deployuses: denoland/deployctl@v1with:project: my-deno-project # TODO: replace with Deno Deploy project nameentrypoint: dist/server/entry.mjs -
提交此 YAML 文件并将其推送到 GitHub 上你配置的部署分支后,部署应会自动开始!
你可以在 GitHub 仓库页面的“Actions”选项卡上或在 Deno Deploy 上跟踪进度。
CLI 部署
名为“CLI 部署”的部分-
安装 Deno Deploy CLI。
终端窗口 deno install -gArf jsr:@deno/deployctl -
使用你偏好的包管理器构建你的 Astro 网站
终端窗口 npm run build终端窗口 pnpm run build终端窗口 yarn run build -
运行
deployctl
进行部署!终端窗口 cd dist && deployctl deploy jsr:@std/http/file-server终端窗口 deployctl 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