Appearance
Options de construction #
build.target #
- Type:
string | string[]
- Défaut:
'modules'
- Relié: Compatibilité avec les navigateurs
Cible de compatibilité avec les navigateurs pour le paquet final. La valeur par défaut est une valeur spéciale Vite, 'modules'
, qui cible les navigateurs prenant en charge native ES Modules, native ESM dynamic import, et i
.
Une autre valeur spéciale est 'esnext'
- qui suppose la prise en charge des importations dynamiques natives et transpile le moins possible :
- Si l'option
build.minify
est'terser'
,'esnext'
sera forcé à descendre à'es2021'
. - Dans les autres cas, il n'effectuera aucune transpilation.
La transformation est effectuée avec esbuild et la valeur doit être une [option cible esbuild] valide (https://esbuild.github.io/api/#target). Les cibles personnalisées peuvent être soit une version ES (par exemple es2015
), un navigateur avec une version (par exemple chrome58
), ou un tableau de plusieurs chaînes cibles.
Notez que la construction échouera si le code contient des fonctionnalités qui ne peuvent pas être transposées en toute sécurité par esbuild. Voir esbuild docs pour plus de détails.
build.modulePreload #
- Type:
boolean | { polyfill? : boolean, resolveDependencies? : ResolveModulePreloadDependenciesFn }
. - Défaut:
true
Par défaut, un [module preload polyfill] (https://guybedford.com/es-module-preloading-integrity#modulepreload-polyfill) est automatiquement injecté. Le polyfill est injecté automatiquement dans le module proxy de chaque entrée index.html
. Si le build est configuré pour utiliser une entrée personnalisée non-HTML via build.rollupOptions.input
, il est alors nécessaire d'importer manuellement le polyfill dans votre entrée personnalisée :
``js Importez 'vite/modulepreload-polyfill'.
Remarque : le polyfill ne s'applique **pas** au [Library Mode] (/guide/build#library-mode). Si vous devez prendre en charge des navigateurs sans importation dynamique native, vous devriez probablement éviter de l'utiliser dans votre bibliothèque.
Le polyfill peut être désactivé en utilisant `{ polyfill : false }`.
La liste des chunks à précharger pour chaque importation dynamique est calculée par Vite. Par défaut, un chemin absolu incluant la `base` sera utilisé lors du chargement de ces dépendances. Si la `base` est relative (`''ou `'./'`), `import.meta.url` est utilisé à l'exécution pour éviter les chemins absolus qui dépendent de la base finale déployée.
Il existe un support expérimental pour un contrôle fin de la liste des dépendances et de leurs chemins en utilisant la fonction `resolveDependencies`. Elle attend une fonction de type `ResolveModulePreloadDependenciesFn` :
```ts
type ResolveModulePreloadDependenciesFn = (
url : string,
deps : string[],
contexte : {
importer : string
}
) => (string | { runtime? : string })[]
La fonction resolveDependencies
sera appelée pour chaque importation dynamique avec une liste des chunks dont elle dépend, et elle sera également appelée pour chaque chunk importé dans les fichiers HTML d'entrée. Un nouveau tableau de dépendances peut être retourné avec ces dépendances filtrées ou plus injectées, et leurs chemins modifiés. Les chemins deps
sont relatifs au build.outDir
. Retourner un chemin relatif au hostId
pour hostType === 'js'
est autorisé, auquel cas new URL(dep, i
est utilisé pour obtenir un chemin absolu lors de l'injection de ce module en préchargement dans la tête HTML.
``js modulePreload : { resolveDependencies : (filename, deps, { hostId, hostType }) => { return deps.filter(condition) } }
Les chemins de dépendance résolus peuvent être modifiés en utilisant [`experimental.renderBuiltUrl`](../guide/build.md#advanced-base-options).
## build.polyfillModulePreload
- **Type:** `boolean`
- **Défaut:** `true`
- **Déprogrammé** utilisez plutôt `build.modulePreload.polyfill`.
Indique si l'on doit injecter automatiquement un [module preload polyfill] (https://guybedford.com/es-module-preloading-integrity#modulepreload-polyfill).
## build.outDir
- **Type:** `string`
- **Défaut:** `dist'.
Spécifiez le répertoire de sortie (relatif à la [racine du projet](/guide/#index-html-and-project-root)).
## build.assetsDir
- **Type:** `string`
- **Défaut:** `assets`
Spécifiez le répertoire dans lequel les actifs générés seront placés (par rapport à `build.outDir`).
## build.assetsInlineLimit
- **Type:** `number`
- **Défaut:** `4096` (4kb)
Les actifs importés ou référencés qui sont plus petits que ce seuil seront mis en ligne en tant qu'URLs base64 pour éviter des requêtes http supplémentaires. Mettez la valeur `0` pour désactiver complètement l'alignement.
Les placeholders LFS de Git sont automatiquement exclus de l'alignement car ils ne contiennent pas le contenu du fichier qu'ils représentent.
Note de conseil
Si vous spécifiez `build.lib`, `build.assetsInlineLimit` sera ignoré et les actifs seront toujours mis en ligne, indépendamment de la taille du fichier ou du fait qu'il s'agisse d'un espace réservé Git LFS.
:: :
## build.cssCodeSplit
- **Type:** `boolean`
- **Défaut:** `true`
Active/désactive le fractionnement du code CSS. Lorsque l'option est activée, le code CSS importé dans les chunks asynchrones sera intégré dans le chunk asynchrone lui-même et inséré lorsque le chunk est chargé.
S'il est désactivé, tous les CSS de l'ensemble du projet seront extraits dans un seul fichier CSS.
Note de conseil
Si vous spécifiez `build.lib`, `build.cssCodeSplit` sera `false` par défaut.
:: :
## build.cssTarget
- **Type:** `string | string[]`
- **Défaut:** identique à [`build.target`](#build-target)
Cette option permet aux utilisateurs de définir une cible de navigateur différente pour la minification CSS de celle utilisée pour la transpilation JavaScript.
Elle ne doit être utilisée que lorsque vous ciblez un navigateur non conventionnel.
Par exemple, Android WeChat WebView, qui prend en charge la plupart des fonctionnalités JavaScript modernes mais pas la notation hexadécimale des couleurs [`#RGBA` en CSS] (https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgb_colors).
Dans ce cas, vous devez définir `build.cssTarget` sur `chrome61` pour empêcher vite de transformer les couleurs `rgba()` en notations hexadécimales `#RGBA`.
## build.sourcemap
- Type:** `booléen | 'en ligne' | 'caché' `.
- **Défaut:** `false`
Génère les cartes de source de production. Si `true`, un fichier source séparé sera créé. Si `'inline'`, la carte des sources sera ajoutée au fichier de sortie résultant comme une URI de données. ``'hidden'`` fonctionne comme `true` sauf que les commentaires de carte source correspondants dans les fichiers groupés sont supprimés.
## build.rollupOptions
- **Type:** [`RollupOptions`](https://rollupjs.org/guide/en/#big-list-of-options)
Personnalisez directement le paquetage Rollup sous-jacent. C'est la même chose que les options qui peuvent être exportées à partir d'un fichier de configuration Rollup et qui seront fusionnées avec les options internes Rollup de Vite. Voir [Rollup options docs](https://rollupjs.org/guide/en/#big-list-of-options) pour plus de détails.
## build.commonjsOptions
- **Type:** [`RollupCommonJSOptions`](https://github.com/rollup/plugins/tree/master/packages/commonjs#options)
Options à transmettre à [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/master/packages/commonjs).
## build.dynamicImportVarsOptions
- **Type:** [`RollupDynamicImportVarsOptions`](https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#options)
- **Relié:** [Importation dynamique](/guide/features#dynamic-import)
Options à transmettre à [@rollup/plugin-dynamic-import-vars](https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars).
## build.lib
- **Type:** `{ entry : string | string[] | { [entryAlias : string] : string }, name? : string, formats? : ('es' | 'cjs' | 'umd' | 'iife')[], fileName? : string | ((format : ModuleFormat, entryName : string) => string) }`
- **Relié:** [Mode bibliothèque](/guide/build#library-mode)
Construire comme une bibliothèque. `entry` est nécessaire puisque la bibliothèque ne peut pas utiliser le HTML comme entrée. `name` est la variable globale exposée et est requise lorsque `formats` inclut `'umd'` ou `'iife'`. Les `formats` par défaut sont `['es', 'umd']`, ou `['es', 'cjs']`, si plusieurs entrées sont utilisées. `fileName` est le nom du fichier de sortie du paquet, par défaut `fileName` est l'option de nom de package.json, il peut aussi être défini comme fonction prenant le `format` et `entryAlias` comme arguments.
## build.manifest
- **Type:** `boolean | string`
- **Défaut:** `false`
- **Relié:** [Backend Integration](/guide/backend-integration)
Lorsqu'il a pour valeur `true`, le build va également générer un fichier `manifest.json` qui contient une correspondance entre les noms de fichiers d'actifs non hachés et leurs versions hachées, qui peuvent ensuite être utilisées par un framework serveur pour rendre les liens d'actifs corrects. Lorsque la valeur est une chaîne, elle sera utilisée comme nom de fichier du manifeste.
## build.ssrManifest
- Type:** `booléen | chaîne de caractères`.
- **Défaut:** `false`
- **Relié:** [Server-Side Rendering](/guide/ssr)
Lorsqu'il a pour valeur `true`, le build générera également un manifeste SSR pour déterminer les liens de style et les directives de préchargement des ressources en production. Lorsque la valeur est une chaîne, elle sera utilisée comme nom de fichier du manifeste.
## build.ssr
- **Type:** `boolean | string`
- **Défaut:** `undefined` (non défini)
- **Relié:** [Server-Side Rendering](/guide/ssr)
Produit un build orienté SSR. La valeur peut être une chaîne pour spécifier directement l'entrée SSR, ou `true`, qui nécessite de spécifier l'entrée SSR via `rollupOptions.input`.
## build.minify
- **Type:** `boolean | 'terser' | 'esbuild'``
- **Défaut:** `'esbuild'``
Mettez à `false` pour désactiver la minification, ou spécifiez le minificateur à utiliser. La valeur par défaut est [esbuild](https://github.com/evanw/esbuild) qui est 20 ~ 40x plus rapide que terser et seulement 1 ~ 2% plus mauvais en compression. [Benchmarks](https://github.com/privatenumber/minification-benchmarks)
Notez que l'option `build.minify` ne minifie pas les espaces blancs lorsque vous utilisez le format `'es'` en mode lib, car cela supprime les annotations pures et casse le tree-shaking.
Terser doit être installé lorsqu'il est réglé sur `'terser'`.
```sh
npm add -D terser
build.terserOptions #
- Type:
TerserOptions
Options supplémentaires de [minification] (https://terser.org/docs/api-reference#minify-options) à transmettre à Terser.
build.write #
- Type:
boolean
- Défaut:
true
Défini à false
pour désactiver l'écriture du bundle sur le disque. Ceci est principalement utilisé dans les appels programmatiques build()
où un post-traitement supplémentaire du paquet est nécessaire avant l'écriture sur le disque.
build.emptyOutDir #
- Type:
boolean
- Défaut:
true
sioutDir
est dansroot
Par défaut, Vite videra le outDir
à la construction s'il est dans la racine du projet. Il émettra un avertissement si outDir
est en dehors de la racine pour éviter de supprimer accidentellement des fichiers importants. Vous pouvez explicitement définir cette option pour supprimer l'avertissement. Ceci est également disponible via la ligne de commande comme --emptyOutDir
.
build.reportCompressedSize #
- Type:
boolean
- Défaut:
true
Active/désactive le rapport de la taille compressée par gzip. La compression de gros fichiers de sortie peut être lente, donc désactiver cette option peut augmenter les performances de construction pour les gros projets.
build.chunkSizeWarningLimit #
- Type:**
number
(nombre) - Défaut:
500
Limite pour les avertissements sur la taille des morceaux (en kbs).
build.watch #
- Type:
WatcherOptions
| null
- Défaut:
null
Défini à {}
pour activer l'observateur de rollup. Ceci est principalement utilisé dans les cas qui impliquent des plugins à construire uniquement ou des processus d'intégration.
:: : avertissement Utilisation de Vite sur Windows Subsystem for Linux (WSL) 2
Il y a des cas où la surveillance du système de fichiers ne fonctionne pas avec WSL2. Voir server.watch
pour plus de détails.
:: :