Skip to content

Conseils d'utilisation 💡 ​

Si vous souhaitez installer le bundle sans la recette de la communauté, consultez l'installation manuelle.

Fichiers CSS comme point d'entrĂ©e ​

Cette section parle de FOUC (Flash de contenu sans style) pour le développement uniquement. Normalement, ce phénomÚne ne devrait pas se produire aprÚs un processus de construction.

Par dĂ©faut si vous importez vos fichiers css Ă  partir du point d'entrĂ©e js, le serveur Vite de dĂ©veloppement crĂ©era un seul point d'entrĂ©e (<script src="http://localhost:5173/build/assets/app.js" type="module"> </script>) pour vos fichiers js et css. Votre contenu CSS sera chargĂ© aprĂšs. Il en rĂ©sulte une pĂ©riode de temps pendant laquelle le contenu de la page ne sera pas stylisĂ©. Cela peut ĂȘtre ennuyeux...

Vous pouvez cependant fournir un fichier css/scss/... comme point d'entrée et il sera directement inséré comme balise de lien <link rel="stylesheet" href="http://localhost:5173/build/assets/theme. scss">. De cette façon, votre navigateur attendra le chargement de votre fichier theme.scss avant de lancer le rendu de la page.

js
export default defineConfig({
    // ...your config
    build: {
        rollupOptions: {
            input: {
                theme: "./assets/theme.scss"
            },
        }
    },
});

TIP

Ajoutez tout de mĂȘme les 2 fonctions Twig vite_entry_link_tags / vite_entry_script_tags mĂȘme si le point d'entrĂ©e est un fichier css car en mode dĂ©veloppement ViteJs aura besoin d'insĂ©rer son code js pour activer le HMR.

twig
{% block stylesheets %}
    {{ vite_entry_link_tags('theme') }}
{% endblock %}

{% block javascripts %}
    {{ vite_entry_script_tags('theme') }}
{% endblock %}

rendera

html
<script src="http://localhost:5173/build/@vite/client" type="module">
<link rel="stylesheet" href="http://localhost:5173/build/assets/theme.scss">

during development.

Docker ​

Si vous utilisez Docker pour votre développement Symfony et que vous exécutez vos commandes node dans un conteneur, vous aurez besoin de faire quelques ajustements dans la configuration.

prenons l'exemple avec une image node:21-alpine.

bash
docker run
  --rm \
  -ti \
  --user $(id -u):$(id -g) \
  -v $(pwd):/app \
  -p 5173:5173 \
  -w /app \
  node:21-alpine \
  npm run dev
js
// vite.config.js
export default defineConfig({
    server: {
        // nous avons besoin que vite Ă©coute sur toutes les interfaces
        host: '0.0.0.0'
    },
    plugins: [
        symfonyPlugin({
            // comme nous avons spécifié un `server.host` = 0.0.0.
            // nous devons explicitement nommer le server host name
            // Ă  utiliser.
            viteDevServerHostname: 'localhost'
        }),
    ],
    build: {
        rollupOptions: {
            input: {
                app: "./assets/app.js"
            },
        }
    },
});

Un exemple de configuration avec Docker peut-ĂȘtre trouvĂ©e de les bacs Ă  sable Symfony Vite Dev.

Vous pourrez en savoir plus en suivant cette discussion Github.

PrĂ©paration des dĂ©pendances 🏃 ​

Initialement dans un projet Vite, index.html est le point d'entrée de votre application. Lorsque vous exécutez votre serveur de développement, Vite analyse votre code source et découvre automatiquement les dépendances dont il aura besoin.

Parce que nous n'avons pas de index.html, Vite ne peut pas faire cette Ă©tape de prĂ©-bundling quand il dĂ©marre mais quand vous naviguez sur une page oĂč il trouve un paquet qu'il n'a pas dĂ©jĂ  mis en cache. Vite relancera le processus de pre-bundling de dependances et rechargera la page.

ce comportement peut ĂȘtre gĂȘnant si vous avez beaucoup de dĂ©pendances car il crĂ©e beaucoup de rechargements de page avant d'arriver au rendu final.

vous pouvez limiter cela en déclarant dans le vite.config.js les dépendances les plus courantes de votre projet.

js
// vite.config.js

export default defineConfig({
    server: {
        //Set to true to force dependency pre-bundling.
        force: true,
    },
    // ...
    optimizeDeps: {
        include: ["my-package"],
    },
});

Configurer le fractionnement des fichiers 📩 ​

Vite essaie de diviser vos fichiers js en plusieurs fichiers plus petits partagés entre les points d'entrée. Pour configurer le fractionnement exact, vous pouvez définir une fonction manualChunks dans rollupOptions, reportez-vous à la documentation rollup pour plus de détails.

js
// vite.config.js

export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        manualChunks: (id: string, {getModuleInfo, getModuleIds}) => {
          // your code
        },
      },
    },
  },
});

https / http en dĂ©veloppement 🔒 ​

Votre serveur de développement Vite peut provoquer un rechargement indésirable (et des alertes de contenu mixte) s'il est utilisé en http alors que votre application Symfony utilise https (probablement en raison de certificats invalides). La configuration est plus facile si vous développez votre application sans https.

bash
npm run dev
symfony serve --no-tls

rendez-vous alors Ă  cette adresse : http://127.0.0.1:8000

si vous souhaitez toujours utiliser https, vous pouvez utiliser une des deux méthodes ci-dessous.

Utiliser le certificat de Symfony cli ​

Tout d'abord, activez symfony-cli TLS si vous ne l'avez pas encore fait.

js
// vite.config.js
import fs from "fs";
import { join } from 'node:path';
import { homedir } from 'node:os';

export default defineConfig({
    // ...
    server: {
        https: {
            pfx: join(homedir(), '.symfony5/certs/default.p12'),
        },
        cors: true
    },
});

TIP

Si vous obtenez des erreurs liĂ©es Ă  TLS lors du lancement du serveur de dĂ©veloppement, cela peut ĂȘtre dĂ» Ă  une ancienne version de symfony-cli/node <17.

Pour résoudre ce problÚme, vous pouvez soit :

  • ajoutez NODE_OPTIONS=--openssl-legacy-provider Ă  votre script npm dev
  • supprimez votre certificat actuel et redĂ©marrez votre serveur (tous les dĂ©tails ici)

GĂ©nĂ©rer des certificats personnalisĂ©s ​

Avec mkcert

bash
mkcert -install
mkcert -key-file certs/vite.key.pem -cert-file certs/vite.crt.pem localhost 127.0.0.1
js
// vite.config.js
import fs from "fs";

export default defineConfig({

    // ...
    server: {
        https: {
          key: fs.readFileSync('certs/vite.key.pem'),
          cert: fs.readFileSync('certs/vite.crt.pem'),
        },
        cors: true
    },
});
bash
npm run dev
symfony serve

rendez-vous Ă  cette adresse : https://127.0.0.1:8000

Publié sous la licence MIT.