Referência da API de importações de configuração
Adicionado em:
astro@5.7.0
Este módulo virtual astro:config expõe uma versão não exaustiva, serializável e tipada da configuração do Astro. Existem dois submódulos para acessar diferentes subconjuntos dos seus valores de configuração: /client e /server.
Todos os valores de configuração disponíveis podem ser acessados a partir de astro:config/server. No entanto, para código executado no cliente, apenas os valores expostos por astro:config/client estarão disponíveis. Isso protege suas informações, disponibilizando apenas alguns dados para o cliente.
Importando de astro:config/client
Seção intitulada “Importando de astro:config/client”Os seguintes helpers são importados do diretório client do módulo de configuração virtual.
import { i18n, trailingSlash, base, build, site, compressHTML,} from "astro:config/client";Utilize este submódulo para código do lado do cliente:
import { trailingSlash } from "astro:config/client";
function addForwardSlash(path) { if (trailingSlash === "always") { return path.endsWith("/") ? path : path + "/" } else { return path }}Veja mais sobre as configurações de importação disponíveis em astro:config/client:
Importando de astro:config/server
Seção intitulada “Importando de astro:config/server”Os seguintes helpers são importados do diretório server do módulo de configuração virtual.
import { i18n, trailingSlash, base, build, site, srcDir, cacheDir, outDir, publicDir, root, compressHTML,} from "astro:config/server";Essas importações incluem tudo que está disponível em astro:config/client, além de informações adicionais e sensíveis sobre a configuração do sistema de arquivos, que não são seguras para expor ao cliente.
Utilize este submódulo para código do lado do servidor:
import { integration } from "./integration.mjs";
export default defineConfig({ integrations: [ integration(), ]});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); // gerar dados a partir de alguma operação let data = JSON.stringify([]); writeFileSync(fileURLToPath(file), data, "utf-8"); } } }}Veja mais sobre as configurações de importação disponíveis em astro:config/server:
i18n(EN)trailingSlash(EN)base(EN)build.format(EN)build.client(EN)build.server(EN)build.assetsPrefix(EN)site(EN)srcDir(EN)cacheDir(EN)outDir(EN)publicDir(EN)root(EN)compressHTML(EN)
Importando de astro/config
Seção intitulada “Importando de astro/config”Os seguintes helpers são importados do módulo de configuração comum:
import { defineConfig, envField, fontProviders, getViteConfig, mergeConfig, passthroughImageService, sessionDrivers, sharpImageService, validateConfig,} from "astro/config";defineConfig()
Seção intitulada “defineConfig()”Tipo: (config: AstroUserConfig) => AstroUserConfig
Configura seu projeto com segurança de tipos em um arquivo de configuração do Astro suportado (EN).
envField
Seção intitulada “envField”Tipo: object
astro@5.0.0
Descreve os tipos de dados suportados ao definir variáveis de ambiente (EN).
Cada tipo de dado deve definir o tipo da variável (EN) com context ("client" ou "server") e access ("secret" ou "public"). Além disso, você pode definir um valor default, especificar se a variável é optional (padrão false) e alguns tipos de dados fornecem métodos de validação opcionais.
envField.string()
Seção intitulada “envField.string()”Tipo: (options: StringFieldInput) => StringField
Define uma variável de ambiente do tipo string. Você pode realizar validação de string com Zod usando as seguintes propriedades: max, min, length, url, includes, startsWith e endsWith.
O exemplo a seguir define o formato esperado para uma variável de ambiente que armazena uma URL de API:
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", }), } }})envField.number()
Seção intitulada “envField.number()”Tipo: (options: NumberFieldInput) => NumberField
Define uma variável de ambiente do tipo number. Você pode realizar validação de número com Zod usando as seguintes propriedades: gt, lt, min, max e int.
O exemplo a seguir define o formato esperado para uma variável de ambiente que armazena uma porta de API:
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, }), } }})envField.boolean()
Seção intitulada “envField.boolean()”Tipo: (options: BooleanFieldInput) => BooleanField
Define uma variável de ambiente do tipo boolean.
O exemplo a seguir define o formato esperado para uma variável de ambiente que armazena se a análise de dados está habilitada:
import { defineConfig, envField } from "astro/config";
export default defineConfig({ env: { schema: { ANALYTICS_ENABLED: envField.boolean({ context: "client", access: "public", optional: true, default: true, }), } }})envField.enum()
Seção intitulada “envField.enum()”Tipo: (options: EnumFieldInput<T>) => EnumField
Define uma variável de ambiente do tipo enum fornecendo os values permitidos como um array.
O exemplo a seguir define o formato esperado para uma variável de ambiente que armazena o modo de depuração configurado:
import { defineConfig, envField } from "astro/config";
export default defineConfig({ env: { schema: { DEBUG_MODE: envField.enum({ context: "server", access: "public", values: ['info', 'warnings', 'errors'], // obrigatório optional: true, default: 'errors', }), } }})fontProviders
Seção intitulada “fontProviders”Tipo: object
astro@6.0.0
Descreve o provedor integrado (EN) usado para obter a fonte configurada (EN).
getViteConfig()
Seção intitulada “getViteConfig()”Tipo: (userViteConfig: ViteUserConfig, inlineAstroConfig?: AstroInlineConfig) => ViteUserConfigFn
Obtém a configuração do Vite a ser usada mesclando um objeto de configuração personalizado do Vite e um objeto de configuração opcional do Astro. Isso é útil para configurar o Vitest para testes (EN).
mergeConfig()
Seção intitulada “mergeConfig()”Veja mergeConfig() na referência da API Programática (EN).
passthroughImageService()
Seção intitulada “passthroughImageService()”Tipo: () => ImageServiceConfig
Obtém um serviço de imagem no-op. Isso é útil quando seu adaptador não oferece suporte à otimização de imagem integrada do Astro com Sharp e você deseja usar os componentes <Image /> e <Picture /> (EN).
O exemplo a seguir define passthroughImageService() como serviço de imagem no arquivo de configuração do Astro para evitar o processamento de imagem do Sharp:
import { defineConfig, passthroughImageService } from "astro/config";
export default defineConfig({ image: { service: passthroughImageService() }});sessionDrivers
Seção intitulada “sessionDrivers”Tipo: object
astro@5.7.0
Descreve o driver integrado (EN) usado para armazenamento de sessão (EN).
O exemplo a seguir configura o driver do Redis para habilitar sessões:
import { defineConfig, sessionDrivers } from "astro/config";
export default defineConfig({ session: { driver: sessionDrivers.redis({ url: process.env.REDIS_URL }), }})sharpImageService()
Seção intitulada “sharpImageService()”Tipo: (config?: SharpImageServiceConfig) => ImageServiceConfig
astro@2.4.1
Obtém o serviço Sharp usado para processar os assets de imagem do Astro. Ele aceita um objeto opcional descrevendo as opções de configuração do Sharp (EN).
validateConfig()
Seção intitulada “validateConfig()”Veja validateConfig() na referência da API Programática (EN).