Pular para o conteúdo

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.

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:

src/utils.js
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:

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:

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);
// 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:

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";

Tipo: (config: AstroUserConfig) => AstroUserConfig

Configura seu projeto com segurança de tipos em um arquivo de configuração do Astro suportado (EN).

Tipo: object

Adicionado em: 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.

Saiba mais sobre usar variáveis de ambiente com segurança de tipos (EN) em seu projeto Astro.

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:

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",
}),
}
}
})

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:

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,
}),
}
}
})

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:

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,
}),
}
}
})

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:

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'], // obrigatório
optional: true,
default: 'errors',
}),
}
}
})

Tipo: object

Adicionado em: astro@6.0.0

Descreve o provedor integrado (EN) usado para obter a fonte configurada (EN).

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).

Veja mergeConfig() na referência da API Programática (EN).

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:

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

Tipo: object

Adicionado em: 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:

astro.config.mjs
import { defineConfig, sessionDrivers } from "astro/config";
export default defineConfig({
session: {
driver: sessionDrivers.redis({
url: process.env.REDIS_URL
}),
}
})
Saiba mais sobre usar sessões (EN) em seu projeto Astro.

Tipo: (config?: SharpImageServiceConfig) => ImageServiceConfig

Adicionado em: 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).

Veja validateConfig() na referência da API Programática (EN).

Contribua Comunidade Sponsor