Despliega tu proyecto de Astro en GitHub Pages
Puedes usar GitHub Pages para alojar un sitio web de Astro estático y prerenderizado directamente desde un repositorio en GitHub.com usando GitHub Actions.
Cómo desplegar
Sección titulada «Cómo desplegar»Astro mantiene la acción oficial de Astro para GitHub para desplegar tu proyecto en GitHub Pages con muy poca configuración, y es la forma recomendada de desplegar en GitHub Pages.
Sigue las instrucciones a continuación para usar la GitHub Action y desplegar tu proyecto de Astro en GitHub Pages. Esto creará un sitio web desde tu repositorio en una URL de GitHub (por ejemplo, https://<usuario>.github.io/<mi-repo>). Una vez desplegado, puedes opcionalmente configurar un dominio personalizado para desplegar tu sitio de GitHub Pages en tu dominio preferido (por ejemplo, https://example.com).
-
Crea un nuevo archivo en tu proyecto en
.github/workflows/deploy.ymly pega el siguiente YAML.deploy.yml name: Deploy to GitHub Pageson:# Activa el flujo de trabajo cada vez que hagas push a la rama `main`# Usando un nombre de rama diferente? Reemplaza `main` con el nombre de tu ramapush:branches: [ main ]# Te permite ejecutar este flujo de trabajo manualmente desde la pestaña Acciones en GitHub.workflow_dispatch:# Permite que este trabajo clone el repositorio y cree un despliegue de páginapermissions:contents: readpages: writeid-token: writejobs:build:runs-on: ubuntu-lateststeps:- name: Checkout your repository using gituses: actions/checkout@v5- name: Install, build, and upload your siteuses: withastro/action@v5# with:# path: . # La ubicación raíz de tu proyecto de Astro dentro del repositorio. (opcional)# node-version: 24 # La versión específica de Node que debería usarse para construir tu sitio. Por defecto es 22. (opcional)# package-manager: pnpm@latest # El gestor de paquetes de Node que debería usarse para instalar dependencias y construir tu sitio. Detectado automáticamente basado en tu lockfile. (opcional)# build-cmd: pnpm run build # El comando para compilar tu sitio. Por defecto ejecuta el script/tarea build del paquete. (opcional)# env:# PUBLIC_POKEAPI: 'https://pokeapi.co/api/v2' # Usa comillas simples para el valor de la variable. (opcional)deploy:needs: buildruns-on: ubuntu-latestenvironment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}steps:- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pages@v4La acción de Astro puede configurarse con entradas opcionales. Puedes proporcionarlas descomentando la línea
with:y la entrada que deseas usar.Si tu sitio requiere variables de entorno públicas, descomenta la línea
env:y agrégalas allí. (Consulta la documentación de GitHub sobre cómo configurar secretos para agregar variables de entorno privadas).La acción oficial de Astro escanea el lockfile para detectar tu gestor de paquetes preferido (
npm,yarn,pnpm, obun). Debes incluir el archivopackage-lock.json,yarn.lock,pnpm-lock.yamlobun.lockbgenerado automáticamente en tu repositorio. -
En el archivo de configuración de Astro, establece
site(EN) con la URL de GitHub de tu sitio desplegado.astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',})El valor de
sitedebe ser uno de los siguientes:- El siguiente URL basado en el nombre de tu usuario:
https://<username>.github.io - El URL autogenerado aleatorio para una página privada de una organización de GitHub:
https://<random-string>.pages.github.io/
- El siguiente URL basado en el nombre de tu usuario:
-
En
astro.config.mjs, configura un valor parabase(EN) (generalmente requerido).GitHub Pages publicará tu sitio web en una dirección que depende tanto de tu nombre de usuario como del nombre de tu repositorio (por ejemplo,
https://<usuario>.github.io/<mi-repo>/). Establece un valor parabaseque especifique el repositorio de tu sitio web, para que Astro entienda que la raíz de tu sitio es/mi-repoen lugar del/predeterminado. Puedes omitir esto si el nombre de tu repositorio coincide con el patrón especial<usuario>.github.io(por ejemplo,https://github.com/usuario/usuario.github.io/).Configura
basecomo el nombre del repositorio comenzando con una barra diagonal (por ejemplo,/mi-repo):astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',base: '/mi-repo',})Cuando este valor está configurado, todos los enlaces internos de tu página deben tener el prefijo del valor de
base:<a href="/mi-repo/acerca">Acerca</a>Ve más sobre cómo configurar un valor
base(EN). -
En GitHub, ve a la pestaña Settings de tu repositorio y busca la sección Pages dentro de la configuración.
-
Elige GitHub Actions como la fuente de tu sitio.
Cuando hagas push de cambios en el repositorio de tu proyecto de Astro, la GitHub Action los desplegará automáticamente en tu URL de GitHub.
Cambia tu URL de GitHub por un dominio personalizado
Sección titulada «Cambia tu URL de GitHub por un dominio personalizado»Una vez que tu proyecto de Astro esté desplegado en GitHub Pages en una URL de GitHub siguiendo las instrucciones anteriores, puedes configurar un dominio personalizado. Esto significa que los usuarios podrán visitar tu sitio en tu dominio personalizado https://example.com en lugar de https://<usuario>.github.io.
-
Añade un archivo
./public/CNAMEa tu proyecto.Crea el siguiente archivo en tu carpeta
public/con una sola línea de texto que especifique tu dominio personalizado:public/CNAME sub.example.comEsto desplegará tu sitio en tu dominio personalizado en lugar de
usuario.github.io. -
En tu configuración de Astro, actualiza el valor de
sitecon tu dominio personalizado. No establezcas un valor parabase, y elimínalo si existe:astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://example.com',base: '/mi-repo'}) -
Si es necesario, actualiza todos los enlaces internos de tus páginas para eliminar el prefijo
base:<a href="/mi-repo/acerca">Acerca</a>
Ejemplos
Sección titulada «Ejemplos»- Plantilla de inicio para despliegue en GitHub Pages
- Starlight Flexoki Theme (sitio en producción)
- Expressive Code Color Chips (sitio en producción)
- Starlight Markdown Blocks (sitio en producción)