Skip to content

Opções de Construção

build.target

Alvo da compatibilidade de navegador para o pacote final. O valor padrão é um valor especial de Vite, 'modules', que aponta navegadores com Módulos de ECMAScript nativo, importação dinâmica de Módulo de ECMAScript nativo, e suporte ao import.meta. A Vite substituirá 'modules' por ['es2020', 'edge88', 'firefox78', 'chrome87', 'safari14']

Um outro valor especial é 'esnext' - que presume o suporte de importações dinâmicas nativa e traduzirá o código o menos possível:

  • Se a opção build.minify for 'terser' e a versão de Terser instalada estiver abaixo de 5.16.0, 'esnext' será forçada até 'es2021'.
  • Em outros casos, ele não realizará nenhuma tradução de código.

A transformação é realizada com esbuild e o valor deve ser uma opção target da esbuild válida. Os alvos personalizados pode ser tanto uma versão de ECMAScript (por exemplo, es2015), um navegador com aversão (por exemplo, chrome58), ou um vetor de várias sequências de caracteres de alvos.

Nota que a construção falhará se o código conter funcionalidades que não podem ser traduzidas com segurança pelo esbuild. Consulte a documentação do esbuild por mais detalhes.

build.modulePreload

  • Tipo: boolean | { polyfill?: boolean, resolveDependencies?: ResolveModulePreloadDependenciesFn }
  • Predefinida como: { polyfill: true }

Por padrão, um "polyfill" de pré-carregamento de módulo é automaticamente injetado. O "polyfill" é injetado automaticamente no módulo de delegação de cada entrada index.html. Se a construção for configurada para usar uma entrada personalizada de não HTML através de build.rollupOptions.input, então é necessário importar manualmente o "polyfill" na tua entrada personalizada:

js
import 'vite/modulepreload-polyfill'

Nota: o "polyfill" não aplica-se ao Modo de Biblioteca. Se precisares suportar os navegadores sem importação dinâmica nativa, deves provavelmente evitar usá-lo na tua biblioteca.

O "polyfill" pode ser desativado usando { polyfill: false }.

A lista de pedaços de pré-carregamento para cada importação dinâmica é calculada pela Vite. Por padrão, um caminho absoluto incluindo a base será usado quando carregamos estas dependências. Se a base for relativa ('' ou './'), import.meta.url é usado em tempo de execução para evitar caminhos absolutos que dependem da base desdobrada final.

Existe suporte experimental para o controlo refinado sobre a lista de dependências e seus caminhos usando a função resolveDependencies. Comente. Espera-se uma função de tipo ResolveModulePreloadDependenciesFn:

ts
type ResolveModulePreloadDependenciesFn = (
  url: string,
  deps: string[],
  context: {
    hostId: string
    hostType: 'html' | 'js'
  }
) => string[]

A função resolveDependencies será chamada para cada importação dinâmica com uma lista dos pedaços sobre os quais ele depende, e será também chamado para cada pedaço importado nos ficheiros de HTML entrada. Um novo vetor de dependências pode ser retornado com estes filtrados ou mais dependências injetadas, e seus caminhos modificados. Os caminhos de deps são relativos a build.outDir. O valor de retorno deve ser um caminho relativo à build.outDir.

js
/** @type {import('vite').UserConfig} */
const config = {
  build: {
    modulePreload: {
      resolveDependencies: (filename, deps, { hostId, hostType }) => {
        return deps.filter(condition)
      },
    },
  },
}

Os caminhos de dependência resolvida podem ser ainda modificados usando experimental.renderBuiltUrl.

build.polyfillModulePreload

  • Tipo: boolean
  • Predefinida como: true
  • Depreciado use build.modulePreload.polyfill

Caso precisares injetar automaticamente um "polyfill" de pré-carregamento de módulo.

build.outDir

  • Tipo: string
  • Predefinida como: dist

Especifica o diretório de saída (relativo à raiz do projeto).

build.assetsDir

  • Tipo: string
  • Predefinida como: assets

Especifica o diretório para encaixar os recursos gerados sob (relativo ao build.outDir. Isto não é usado no Modo de Biblioteca).

build.assetsInlineLimit

  • Tipo: number | ((filePath: string, content: Buffer) => boolean | undefined)
  • Predefinida como: 4096 (4 KiB)

Recursos importados ou referenciados que são menores do que este limiar serão embutidos como URLs de base64 para evitar requisições de http adicionais. Defina para 0 para desativar completamente este processo de embutir.

Se uma função de resposta for passada, um valor booleano pode ser retornado para ativar ou desativar a opção. Se nada for retornado, aplica-se a lógica padrão.

Os seguradores de lugares do Sistema de Ficheiro Grande de Git são automaticamente excluídos do processo de embutir porque eles não contém o conteúdo do ficheiro que eles representam.

Nota

Se especificares build.lib, build.assetsInlineLimit será ignorado e os recursos serão sempre embutidos, independentemente do tamanho de ficheiro ou de ser um segurador de lugar de Sistema de Ficheiro Grande de Git (Git LFS, em Inglês).

build.cssCodeSplit

  • Tipo: boolean
  • Predefinida como: true

Ativa ou desativa a separação de código de CSS. Quando ativada, a CSS importada nos pedaços assíncronos serão preservados como pedaços e trazidos juntos quando o pedaço for requisitado.

Se desativada, todas CSS no projeto inteiro serão extraídas em um único ficheiro de CSS.

Nota

Se especificares build.lib, build.cssCodeSplit será false como padrão.

build.cssTarget

  • Tipo: string | string[]
  • Predefinida como: o mesmo que build.target

Esta opção permite os utilizadores definir um alvo de navegador diferente para a minificação de CSS daquela usada para a tradução de código de JavaScript.

Ela deve apenas ser usada quando estiveres mirando um navegador fora dos padrão. Um exemplo é o Android WeChat WebView, que suporta a maior parte das funcionalidades de JavaScript moderno mais não a notação de cor hexadecimal #RGBA em CSS. Nestes casos, precisas definir build.cssTarget para chrome61 para impedir a Vite de transformar as cores rgba() em notações hexadecimal #RGBA.

build.cssMinify

  • Tipo:
  • Predefinida como: o mesmo que build.minify para o cliente, 'esbuild' para interpretação do lado do servidor.

Esta opção permite os utilizadores sobrepor a especificamente a minificação de CSS no lugar de padronizar para build.minify, assim podes configurar a minificação para código de JavaScript e CSS separadamente. A Vite usa a esbuild por padrão para minificar a CSS. Defina a opção para 'lightningcss' para usar a CSS relâmpago. Caso selecionada, pode ser configurada usando css.lightningcss.

build.sourcemap

  • Tipo: boolean | 'inline' | 'hidden'
  • Predefinida como: false

Gera os mapas da fonte de produção. Se for true, um ficheiro de mapa de fonte separado será criado. Se for 'inline', o mapa de fonte será anexado ao ficheiro de saída resultante como uma URI de dados. O 'hidden' funciona de maneira parecida que true exceto que os comentários de mapa de fonte correspondente nos ficheiros empacotadas são suprimidos.

build.rollupOptions

Personaliza diretamente o pacote de Rollup subjacente. Isto é o mesmo que as opções que podem ser exportadas a partir de um ficheiro de configuração de Rollup e serão combinados com as opções internas da Vite. Consulte a documentação das opções de Rollup para mais detalhes.

build.commonjsOptions

Opções para passar ao @rollup/plugin-commonjs.

build.dynamicImportVarsOptions

Opções para passar ao @rollup/plugin-dynamic-import-vars.

build.lib

  • Tipo: { entry: string | string[] | { [entryAlias: string]: string }, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string | ((format: ModuleFormat, entryName: string) => string) }
  • Relacionado ao: Modo de Biblioteca

Constrói como uma biblioteca. entry é obrigatório visto que a biblioteca não pode usar a HTML como entrada. name é a variável global exposta e é obrigatória quando formats inclui 'umd' ou 'iife'. Os valores predefinidos de formats são ['es', 'umd']. fileName é o nome da saída de ficheiro do pacote, o valor predefinido de fileName é a opção de nome do package.json, ele também pode ser definido como função recebendo o format e entryName como argumentos.

build.manifest

Quando definido para true, a construção também gerará um ficheiro .vite/manifest.json que contém um mapeamento de nomes de ficheiros de recurso não embaralhado para as suas versões embaralhadas, as quais podem então ser usadas por uma abstração de servidor para interpretar as ligações de recurso correta. Quando o valor é uma sequência de caracteres, será usada como nome do ficheiro de manifesto.

build.ssrManifest

Quando definido para true, a construção também gerará um manifesto de SSR para a determinação de ligações de estilo e diretivas de pré-carregamento de recurso em produção. Quando o valor for uma sequência de caracteres, será usada como nome do ficheiro de manifesto.

build.ssr

Produz a construção orientada pela SSR. O valor pode ser uma sequência de caracteres para diretamente especificar a entrada da SSR, ou true, o qual exige a especificação da entrada de SSR através de rollupOptions.input.

build.emitAssets

  • Tipo: boolean
  • Predefinida como: false

Durante as construções sem cliente, os recursos ou ativos estáticos não são emitidos, uma vez que se assume que seriam emitidos como parte da construção do cliente. Esta opção permite que as abstrações forcem a sua emissão noutros ambientes de construção. É da responsabilidade da abstração fundir os recursos estáticos com uma etapa pós-construção.

build.ssrEmitAssets

  • Tipo: boolean
  • Predefinida como: false

Durante a construção do lado do servidor, os recursos estáticos não são emitidos, uma vez que se assume que seriam emitidos como parte da construção do cliente. Esta opção permite a abstração forçar a emissão deles em ambas construções do cliente e do servidor. É responsabilidade da abstração combinar os recursos com uma etapa pós-construção. Esta opção será substituída por build.emitAssets quando a interface de programação de aplicação de ambiente estiver estável.

build.minify

  • Tipo: boolean | 'terser' | 'esbuild'
  • Predefinida como: 'esbuild' para construção do cliente, false para construção da interpretação do lado do servidor

Define para false para desativar a minificação, ou especifique o minificador a usar. O padrão é esbuild o qual é 20 ~ 40x mais rápido do que o terser e apenas 1 ~ 2% pior em compressão. Pontos de Referências.

Nota que a opção build.minify não minifica espaços em branco quando usamos o formato 'es' no modo de biblioteca, porque remove as anotações puras e quebra a sacudidura de árvore.

Terser deve ser instalado quando estiver definido para 'terser'.

sh
npm add -D terser

build.terserOptions

  • Tipo: TerserOptions

Opções de minificação adicionais para passar ao Terser.

Além disto, também podemos passar uma opção maxWorkers: number para especificar o número máximo de operários à gerar. Predefine para o número de CPUs menos 1.

build.write

  • Tipo: boolean
  • Predefinida como: true

Defina para false para desativar a escrita do pacote no disco. Isto é na maior parte das vezes usada nas chamadas de build() programáticas onde mais adiante o processamento posterior do pacote é necessário antes da escrita em disco.

build.emptyOutDir

  • Tipo: boolean
  • Predefinida como: true se outDir estiver dentro do root

Por padrão, a Vite esvaziará o outDir na construção se estiver dentro da raiz do projeto. Ele emitirá um aviso se outDir está fora da raiz para evitar remover acidentalmente ficheiros importantes. Tu podes definir explicitamente esta opção para suprimir o aviso. Isto também está disponível através da linha de comando como --emptyOutDir.

build.copyPublicDir

  • Tipo: boolean
  • Predefinida como: true

Por padrão, Vite copiará os ficheiros da publicDir para a outDir na construção. Defina para false para desativar isto.

build.reportCompressedSize

  • Tipo: boolean
  • Predefinida como: true

Ativa e desativa a reportagem do tamanho compactado em GZip. A compactação de ficheiros de saída grande pode ser lento, assim a desativação disto pode aumentar o desempenho da construção para projetos grandes.

build.chunkSizeWarningLimit

  • Tipo: number
  • Predefinida como: 500

Limite para avisos do tamanho do pedaço (em kB). É comparada contra o tamanho do pedaço não compactado visto que o próprio tamanho da JavaScript está relacionado ao tempo de execução.

build.watch

Defina para {} para ativar o observador de Rollup. Isto é na maior parte das vezes usado nos casos que envolve extensões de apenas construção ou processos de integrações.

Usando a Vite no Subsistema de Windows para Linux (WSL, sigla em Inglês) 2

Há casos que o sistema de ficheiro observando não funciona com WSL2. Consulte server.watch para mais detalhes.

Lançada sob a Licença MIT. (ccd524d4)