Pular para o conteúdo
Filters

    Referência de plugins

    Os plugins do Starlight podem personalizar a configuração, UI, e comportamento, além de serem fáceis de compartilhar e reutilizar. Essa página de referência documenta a API que os plugins tem acesso.

    Aprenda mais sobre como usar um plugin do Starlight na Referência da Configuração ou visite o mostruário de plugins para ver uma lista de plugins disponíveis.

    Um plugin do Starlight segue o seguinte formato. Veja abaixo os detalhes das diferentes propriedades e parâmetros de hooks.

    interface StarlightPlugin {
    name: string;
    hooks: {
    setup: (options: {
    config: StarlightUserConfig;
    updateConfig: (newConfig: StarlightUserConfig) => void;
    addIntegration: (integration: AstroIntegration) => void;
    astroConfig: AstroConfig;
    command: 'dev' | 'build' | 'preview';
    isRestart: boolean;
    logger: AstroIntegrationLogger;
    }) => void | Promise<void>;
    };
    }

    tipo: string

    Um plugin deve fornecer um nome único que o descreve. O nome é usado nas mensagens de log relacionadas ao plugin e pode ser utilizado por outros plugins para detectar a sua presença.

    Hooks são funções que o Starlight chama para executar um código do plugin em momentos específicos. Atualmente, o Starlight suporta apenas o hook setup.

    Função de setup chamada quando o Starlight é iniciado (durante a execução do hook de integração astro:config:setup). O hook setup pode ser utilizado para atualizar a configuração do Starlight ou adicionar integrações ao Astro.

    Este hook é chamado com as seguintes opções:

    tipo: StarlightUserConfig

    Uma cópia somente leitura da configuração do Starlight fornecida pelo usuário. Essa configuração pode ter sido atualizada por outros plugins configurados antes desse.

    tipo: (newConfig: StarlightUserConfig) => void

    Uma função de callback para atualizar a configuração do Starlight fornecida pelo usuário. Forneça as chaves de configuração no nível-raiz que você quer sobrescrever. Para atualizar valores de configuração aninhados, você precisa fornecer todo o objeto aninhado.

    Para estender uma configuração existente sem sobrescrevê-la, espalhe os valores existentes no novo valor. No seguinte exemplo, uma nova conta de mídia social é adicionada à configuração existente espalhando o objeto config.social no novo objeto social:

    plugin.ts
    export default {
    name: 'add-twitter-plugin',
    hooks: {
    setup({ config, updateConfig }) {
    updateConfig({
    social: {
    ...config.social,
    twitter: 'https://twitter.com/astrodotbuild',
    },
    });
    },
    },
    };

    tipo: (integration: AstroIntegration) => void

    Uma função de callback para adicionar uma Integração Astro requerida pelo plugin.

    No seguinte exemplo, o plugin primeiro verifica se a Integração de React do Astro está configurada, caso não esteja, usa addIntegration() para adicioná-la:

    plugin.ts
    import react from '@astrojs/react';
    export default {
    name: 'plugin-using-react',
    hooks: {
    setup({ addIntegration, astroConfig }) {
    const isReactLoaded = astroConfig.integrations.find(
    ({ name }) => name === '@astrojs/react'
    );
    // Só adiciona a integração com o React se ela não estiver carregada.
    if (!isReactLoaded) {
    addIntegration(react());
    }
    },
    },
    };

    tipo: AstroConfig

    Uma cópia somente leitura da configuração do Astro fornecida pelo usuário.

    tipo: 'dev' | 'build' | 'preview'

    O comando usado para executar o Starlight:

    • dev - O projeto é executado com astro dev
    • build - O projeto é executado com astro build
    • preview - O projeto é executado com astro preview

    tipo: boolean

    false quando o servidor de desenvolvimento é iniciado, true quando uma atualização é disparada. Razões comuns para um reinicio incluem um usuário editando o arquivo astro.config.mjs enquanto o servidor de desenvolvimento está sendo executado.

    tipo: AstroIntegrationLogger

    Uma instância do Astro logger que você pode usar para escrever logs. Todas as mensagens de log serão prefixadas com o nome do plugin.

    plugin.ts
    export default {
    name: 'long-process-plugin',
    hooks: {
    setup({ logger }) {
    logger.info('Iniciando um processo longo…');
    // Algum processo longo…
    },
    },
    };

    O exemplo acima registrará um log que inclui a mensagem info fornecida:

    Terminal window
    [long-process-plugin] Iniciando um processo longo…