Deploy your Astro Site with Deno
You can deploy a static or on-demand rendered Astro site using Deno, either on your own server, or to Deno Deploy, a distributed system that runs JavaScript, TypeScript, and WebAssembly at the edge, worldwide.
This guide includes instructions for running your Astro site on your own server with Deno, and deploying to Deno Deploy through GitHub Actions or the Deno Deploy CLI.
Requirements
Заголовок раздела «Requirements»This guide assumes you already have Deno installed.
Project Configuration
Заголовок раздела «Project Configuration»Your Astro project can be deployed as a static site, or as an on-demand rendered site.
Static Site
Заголовок раздела «Static Site»Your Astro project is a static site by default. You don’t need any extra configuration to deploy a static Astro site with Deno, or to Deno Deploy.
Adapter for on-demand rendering
Заголовок раздела «Adapter for on-demand rendering»To enable on-demand rendering in your Astro project using Deno, and to deploy on Deno Deploy:
-
Install the
@deno/astro-adapteradapter to your project’s dependencies using your preferred package manager:Окно терминала npm install @deno/astro-adapterОкно терминала pnpm install @deno/astro-adapterОкно терминала yarn add @deno/astro-adapter -
Update your
astro.config.mjsproject configuration file with the changes below.astro.config.mjs import { defineConfig } from 'astro/config';import deno from '@deno/astro-adapter';export default defineConfig({output: 'server',adapter: deno(),}); -
Update your
previewscript inpackage.jsonwith 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.
Окно терминала npm run previewОкно терминала pnpm run previewОкно терминала yarn run preview
How to deploy
Заголовок раздела «How to deploy»You can run your Astro site on your own server, or deploy to Deno Deploy through GitHub Actions or using Deno Deploy’s CLI (command line interface).
On your own server
Заголовок раздела «On your own server»-
Copy your project onto your server.
-
Install the project dependencies using your preferred package manager:
Окно терминала npm installОкно терминала pnpm installОкно терминала yarn -
Build your Astro site with your preferred package manager:
Окно терминала npm run buildОкно терминала pnpm run buildОкно терминала yarn run build -
Start your application with the following command:
Окно терминала deno run -A jsr:@std/http/file-server distОкно терминала deno run -A ./dist/server/entry.mjs
GitHub Actions Deployment
Заголовок раздела «GitHub Actions Deployment»If 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.ymland paste in the YAML below. This is similar to the YAML given by Deno Deploy, with the additional steps needed for your Astro site..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 -
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
Заголовок раздела «CLI Deployment»-
Install the Deno Deploy CLI.
Окно терминала deno install -gArf jsr:@deno/deployctl -
Build your Astro site with your preferred package manager:
Окно терминала npm run buildОкно терминала pnpm run buildОкно терминала yarn run build -
Run
deployctlto deploy!Окно терминала cd dist && deployctl deploy jsr:@std/http/file-serverОкно терминала deployctl deploy ./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-denoscript inpackage.json.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"}}Then you can use this command to build and deploy your Astro site in one step.
Окно терминала npm run deno-deploy