Saltar al contenido

Referencia de la API de importaciones de configuración

Añadido en: astro@5.7.0

Este módulo virtual astro:config expone una versión no exhaustiva, serializable y con seguridad de tipos de la configuración de Astro. Hay dos submódulos para acceder a diferentes subconjuntos de tus valores de configuración: /client y /server.

Todos los valores de configuración disponibles pueden accederse desde astro:config/server. Sin embargo, para código ejecutado en el cliente, solo aquellos valores expuestos por astro:config/client estarán disponibles. Esto protege tu información haciendo solo algunos datos disponibles para el cliente.

Los siguientes helpers se importan desde el directorio client del módulo virtual de configuración.

import {
i18n,
trailingSlash,
base,
build,
site,
compressHTML,
} from "astro:config/client";

Usa este submódulo para código del lado del cliente:

src/utils.js
import { trailingSlash } from "astro:config/client";
function addForwardSlash(path) {
if (trailingSlash === "always") {
return path.endsWith("/") ? path : path + "/"
} else {
return path
}
}

Ver más sobre las importaciones de configuración disponibles desde astro:config/client:

Los siguientes helpers se importan desde el directorio server del módulo virtual de configuración.

import {
i18n,
trailingSlash,
base,
build,
site,
srcDir,
cacheDir,
outDir,
publicDir,
root,
compressHTML,
} from "astro:config/server";

Estas importaciones incluyen todo lo disponible desde astro:config/client así como información sensible adicional sobre la configuración de tu sistema de archivos que no es segura para exponer al cliente.

Usa este submódulo para código del lado del servidor:

astro.config.mjs
import { integration } from "./integration.mjs";
export default defineConfig({
integrations: [
integration(),
]
});
integration.mjs
import { outDir } from "astro:config/server";
import { writeFileSync } from "node:fs";
import { fileURLToPath } from "node:url";
export default function() {
return {
name: "internal-integration",
hooks: {
"astro:build:done": () => {
let file = new URL("result.json", outDir);
// generate data from some operation
let data = JSON.stringify([]);
writeFileSync(fileURLToPath(file), data, "utf-8");
}
}
}
}

Ver más sobre las importaciones de configuración disponibles desde astro:config/server:

Los siguientes helpers se importan desde el módulo regular de configuración:

import {
defineConfig,
envField,
fontProviders,
getViteConfig,
memoryCache,
logHandlers,
mergeConfig,
passthroughImageService,
sessionDrivers,
sharpImageService,
validateConfig,
} from "astro/config";

Type: (config: AstroUserConfig) => AstroUserConfig

Configura tu proyecto con seguridad de tipos en un archivo de configuración de Astro soportado.

Type: object

Añadido en: astro@5.0.0

Describe los tipos de datos soportados al definir variables de entorno.

Cada tipo de dato debe definir el tipo de variable con context ("client" o "server") y access ("secret" o "public"). Además, puedes definir un valor por defecto, especificar si la variable es opcional (por defecto false), y algunos tipos de datos proporcionan métodos de validación opcionales.

Aprende más sobre usar variables de entorno con seguridad de tipos en tu proyecto de Astro.

Type: (options: StringFieldInput) => StringField

Define una variable de entorno de tipo string. Puedes realizar validación de string con Zod usando las siguientes propiedades: max, min, length, url, includes, startsWith y endsWith.

El siguiente ejemplo define la estructura esperada para una variable de entorno que almacena una URL de API:

astro.config.mjs
import { defineConfig, envField } from "astro/config";
export default defineConfig({
env: {
schema: {
API_URL: envField.string({
context: "client",
access: "public",
optional: false,
default: "",
min: 12,
url: true,
includes: "astro",
startsWith: "https",
}),
}
}
})

Type: (options: NumberFieldInput) => NumberField

Define una variable de entorno de tipo number. Puedes realizar validación de número con Zod usando las siguientes propiedades: gt, lt, min, max y int.

El siguiente ejemplo define la estructura esperada para una variable de entorno que almacena un puerto de API:

astro.config.mjs
import { defineConfig, envField } from "astro/config";
export default defineConfig({
env: {
schema: {
API_PORT: envField.number({
context: "server",
access: "public",
optional: true,
default: 4321,
min: 2,
int: true,
}),
}
}
})

Type: (options: BooleanFieldInput) => BooleanField

Define una variable de entorno de tipo booleano.

El siguiente ejemplo define la estructura esperada para una variable de entorno que almacena si las analíticas están habilitadas:

astro.config.mjs
import { defineConfig, envField } from "astro/config";
export default defineConfig({
env: {
schema: {
ANALYTICS_ENABLED: envField.boolean({
context: "client",
access: "public",
optional: true,
default: true,
}),
}
}
})

Type: (options: EnumFieldInput<T>) => EnumField

Define una variable de entorno de tipo enum proporcionando los valores permitidos como un array.

El siguiente ejemplo define la estructura esperada para una variable de entorno que almacena el modo de depuración configurado:

astro.config.mjs
import { defineConfig, envField } from "astro/config";
export default defineConfig({
env: {
schema: {
DEBUG_MODE: envField.enum({
context: "server",
access: "public",
values: ['info', 'warnings', 'errors'], // required
optional: true,
default: 'errors',
}),
}
}
})

Type: object

Añadido en: astro@6.0.0

Describe el proveedor integrado usado para obtener la fuente configurada.

Type: (userViteConfig: ViteUserConfig, inlineAstroConfig?: AstroInlineConfig) => ViteUserConfigFn

Recupera la configuración de Vite a usar combinando un objeto de configuración personalizado de Vite y un objeto de configuración opcional de Astro. Esto es útil para configurar Vitest para testing.

Tipo: (config?: MemoryCacheProviderOptions) => CacheProviderConfig<MemoryCacheProviderOptions>

Ver memoryCache() en la referencia del proveedor de caché.

Type: object

Añadido en: astro@7.0.0 Nuevo

Describe los log handlers integrados disponibles que pueden usarse para configurar un logger en tu configuración de Astro.

Ver mergeConfig() en la referencia de la API Programática.

Type: () => ImageServiceConfig

Recupera un servicio de imágenes no-op. Esto es útil cuando tu adaptador no soporta la optimización de imágenes Sharp integrada de Astro y quieres usar los componentes <Image /> y <Picture />.

El siguiente ejemplo define passthroughImageService() como servicio de imágenes en el archivo de configuración de Astro para evitar el procesamiento de imágenes con Sharp:

astro.config.mjs
import { defineConfig, passthroughImageService } from "astro/config";
export default defineConfig({
image: {
service: passthroughImageService()
}
});

Type: object

Añadido en: astro@5.7.0

Describe el driver integrado usado para el almacenamiento de sesiones.

El siguiente ejemplo configura el driver de Redis para habilitar sesiones:

astro.config.mjs
import { defineConfig, sessionDrivers } from "astro/config";
export default defineConfig({
session: {
driver: sessionDrivers.redis({
url: process.env.REDIS_URL
}),
}
})
Aprende más sobre el uso de sesiones en tu proyecto de Astro.

Type: (config?: SharpImageServiceConfig) => ImageServiceConfig

Añadido en: astro@2.4.1

Recupera el servicio Sharp usado para procesar los assets de imágenes de Astro. Esto toma un objeto opcional que describe las opciones de configuración para Sharp.

Ver validateConfig() en la referencia de la API Programática.

Contribuir Comunidad Patrocinar