Deploy your Astro Site to Deno
此内容尚不支持你的语言。
You can deploy a server-side rendered Astro site to Deno Deploy, a distributed system that runs JavaScript, TypeScript, and WebAssembly at the edge, worldwide.
This guide includes instructions for deploying to Deno Deploy through GitHub Actions or Deno Deploy’s CLI.
Requirements
Section titled RequirementsThis guide assumes you already have Deno installed.
Project Configuration
Section titled Project ConfigurationYour Astro project can be deployed to Deno Deploy as a server-side rendered site (SSR). Deno Deploy does not support static sites.
Adapter for SSR
Section titled Adapter for SSRTo enable SSR in your Astro project and deploy on Deno Deploy:
Add the Deno adapter to enable SSR in your Astro project with the following astro add
command. This will install the adapter and make the appropriate changes to your astro.config.mjs
file in one step.
npx astro add deno
If you prefer to install the adapter manually instead, complete the following two steps:
-
Install the
@astrojs/deno
adapter to your project’s dependencies using your preferred package manager. If you’re using npm or aren’t sure, run this in the terminal:Terminal window npm install @astrojs/deno -
Update your
astro.config.mjs
project configuration file with the changes below.astro.config.mjs import { defineConfig } from 'astro/config';import deno from '@astrojs/deno';export default defineConfig({output: 'server',adapter: deno(),});Next, Update your
preview
script inpackage.json
with the change below.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"}}You can now use this command to preview your production Astro site locally with Deno.
Terminal window npm run preview
How to deploy
Section titled How to deployYou can deploy to Deno Deploy through GitHub Actions or using Deno Deploy’s CLI (command line interface).
GitHub Actions Deployment
Section titled GitHub Actions DeploymentIf your project is stored on GitHub, the Deno Deploy website will guide you through setting up GitHub Actions to deploy your Astro site.
-
Push your code to a public or private GitHub repository.
-
Sign in on Deno Deploy with your GitHub account, and click on New Project.
-
Select your repository, the branch you want to deploy from, and select GitHub Action mode. (Your Astro site requires a build step, and cannot use Automatic mode.)
-
In your Astro project, create a new file at
.github/workflows/deploy.yml
and paste in the YAML below. This is similar to the YAML given by Deno Deploy, with the additional steps needed for your Astro site.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@v3# 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: server/entry.mjsroot: dist -
After committing this YAML file, and pushing to GitHub on your configured deploy branch, the deploy should begin automatically!
You can track the progress using the “Actions” tab on your GitHub repository page, or on Deno Deploy.
CLI Deployment
Section titled CLI Deployment-
Install the Deno Deploy CLI.
Terminal window deno install --allow-read --allow-write --allow-env --allow-net --allow-run --no-check -r -f https://deno.land/x/deploy/deployctl.ts -
Run your Astro build step.
Terminal window npm run build -
Run
deployctl
to deploy!In the command below, replace
<ACCESS-TOKEN>
with your Personal Access Token and<MY-DENO-PROJECT>
with your Deno Deploy project name.Terminal window DENO_DEPLOY_TOKEN=<ACCESS-TOKEN> deployctl deploy --project=<MY-DENO-PROJECT> --no-static --include=./dist ./dist/server/entry.mjsYou can track all your deploys on Deno Deploy.
-
(Optional) To simplify the build and deploy into one command, add a
deploy-deno
script inpackage.json
.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 --project=<MY-DENO-PROJECT> --no-static --include=./dist ./dist/server/entry.mjs"}}Then you can use this command to build and deploy your Astro site in one step.
Terminal window DENO_DEPLOY_TOKEN=<ACCESS-TOKEN> npm run deno-deploy