Skip to content

Vite plugin Symfony options

debug

  • Type : boolean
  • Valeur par défaut : false

Affiche dans la console la configuration complète de Vite lorsqu'elle a été complètement résolue (configResolved).

enforcePluginOrderingPosition

  • Type : boolean
  • Valeur par défaut : true

Force l'exécution du plugin à la fin. Cela nous garanti que tous les fichiers seront traités et permet notamment de générer les bon hachages de nos fichiers si l'on souhaite ajouter des attributs d'intégrité à nos scripts. si vous désactivez cette option le plugin symfony sera exécuté à l'emplacement où il a été déclaré.

enforceServerOriginAfterListening

  • Type : boolean
  • Valeur par défaut : true

par défaut tout import de resource dans un fichier est résolu le serveur de Vite sans spécifier l'origine.

js
import logo from './assets/logo.svg'
// voir https://github.com/vitejs/vite/blob/main/packages/vite/src/node/plugins/asset.ts#L289

console.log(logo);
// '/build/assets/logo.svg'
import logo from './assets/logo.svg'
// voir https://github.com/vitejs/vite/blob/main/packages/vite/src/node/plugins/asset.ts#L289

console.log(logo);
// '/build/assets/logo.svg'

cela se révèle problèmatique avec une utilisation sous Symfony car c'est le serveur php de Symfony qui sera à l'origine de la requête et celui-ci ne sera pas capable de résoudre le chemin. Jusqu'à la v5, pentatrion/vite-bundle transmettait la requête à vite par proxy. Avec cette option, vos assets seront résolus plus rapidement car ne transiteront pas par Symfony.

Si vous rencontrez des problèmes d'affichage de resources car vous êtes dans des environnements spécifiques (Docker par exemple), vous pourriez être amené à désactiver cette option.

exposedEnvVars

  • Type: string[]
  • Valeur par défaut: ["APP_ENV"]

Par défaut, Vite expose un certain nombre de variables d'environnement à travers l'objet import.meta.env : MODE, BASE_URL, PROD, DEV, SSR.

Il lit également les fichiers .env / .env.local / .env.[mode] / .env.[mode].local et en extrait les variables d'environnement associées.

Pour des raisons de sécurité seules les variables préfixées par VITE_ sont exposées. Dans certains cas vous voudrez pouvoir accéder à d'autres variables. Il vous suffit de les ajouter ici.

WARNING

Attention à bien faire la distinction entre ces 3 variables d'environnement extraites.

  • import.meta.env.PROD: {booléen} si l'application s'exécute en production (exécutant le serveur de développement avec NODE_ENV='production' ou exécutant une application créée avec NODE_ENV='production')
  • import.meta.env.DEV: {booléen} si l'application est en cours de développement (toujours à l'opposé de import.meta.env.PROD)
  • import.meta.env.APP_ENV : valeur calculée à partir des fichiers .env, .env.local, etc...

Enfin de la même manière, attention à l'interprétation des fichiers .env.[mode] ou mode sera évalué en fonction de NODE_ENV par vite et en fonction de APP_ENV par Symfony. Donc il vaut mieux s'abstenir 🤯. documentation Vite Env Variables and Modes.

INFO

Il existe aussi l'option envPrefix pour Vite. Mais elle est moins flexible : Vite Shared options : envPrefix.

originOverride

  • Type: null | string
  • Valeur par défaut: null

Remplace l'origine pour les points d'entrée avec le serveur de développement. Utile lorsque vous utilisez un serveur proxy. Si vous avez spécifié l'option Vite server.host à 0.0.0.0 (pour Docker notamment) vous aurez probablement besoin de configurer originOverride à http://localhost. Si vous souhaitez préciser le scheme, l'hôte et le port, utilisez originOverride sinon préférez viteDevServerHostname.

refresh

  • Type : boolean | string[]
  • Valeur par défaut : false

Permet de relancer le serveur de développement de Vite lorsque vos fichiers sont modifiés. En mettant cette valeur à true, le serveur vérifiera les modifications sur vos fichiers Twig (équivalent à la valeur ["templates/**/*.twig"]). Vous pouvez également définir votre propre tableau de motif.

Vite utilise la librairie picomatch pour interpréter les motifs.

servePublic

  • Type : boolean | string
  • Valeur par défaut : true

Par défaut l'extension désactive l'option publicDir de la configuration de vite. Nous ne souhaitons pas que le contenu complet du dossier public (point d'entrée index.php, etc...) soit copié dans le dossier de build. (voir discussion). En activant cette option l'extension active tout de même un serveur local pour que le serveur de développement de Vite puisse renvoyer les fichiers présents dans le dossier public.

Si vous souhaitez tout de même utiliser l'option publicDir de vite, désactivez d'abord cette option.

TIP

Cette option sera supprimée dès que l'option build.copyPublicDir de Vite sera définitivement adoptée.

sriAlgorithm

  • Type : false | "sha256" | "sha384" | "sha512"
  • Valeur par défaut : false

Génère des clés de hachage lors de la génération de vos fichiers. À utiliser si vous souhaitez déployer vos ressources sur un CDN.

stimulus

  • Type : boolean | string | VitePluginSymfonyStimulusOptions
  • Valeur par défaut : false

Active le bridge qui va interpréter le fichier assets/controllers.json pour les contrôleurs tiers de Stimulus (incluant Symfony UX).

Saisir true si votre fichier est situés à l'emplacement par défaut assets/controllers.json sinon spécifiez le chemin vers votre fichier de référence.

vous pouvez aussi préciser un objet de configuration.

ts
type VitePluginSymfonyStimulusOptions = {
  /**
   * path to controllers.json relative to vite root
   * @default ./assets/controller.json
   */
  controllersFilePath: string;

  /**
   * enable hmr for controllers
   * @default true
   */
  hmr: boolean;
}
type VitePluginSymfonyStimulusOptions = {
  /**
   * path to controllers.json relative to vite root
   * @default ./assets/controller.json
   */
  controllersFilePath: string;

  /**
   * enable hmr for controllers
   * @default true
   */
  hmr: boolean;
}

WARNING

Par défaut le HMR est activé sur vos controlleurs Stimulus. Si ces derniers ne sont pas idempotents (voir doc Stimulus), vous risquez de rencontrez des problèmes (les HMR ne fonctionnera pas comme attendu et vous devrez rafraîchir manuellement votre page). Dans ce cas il est préférable de désactiver l'option hmr: false. Ainsi, toute modification du fichier entrainera quand même un rafraichissement automatique de la page.

viteDevServerHostname

  • Type : null | string
  • Valeur par défaut : null

Si vous avez spécifié l'option Vite server.host à 0.0.0.0 (pour Docker notamment) vous aurez probablement besoin de configurer viteDevServerHostname à 'localhost'. Voir discussion.

Publié sous la licence MIT.