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.
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.
{% block stylesheets %}
{{ vite_entry_link_tags('theme') }}
{% endblock %}
{% block javascripts %}
{{ vite_entry_script_tags('theme') }}
{% endblock %}
rendera
<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
.
docker run
--rm \
-ti \
--user $(id -u):$(id -g) \
-v $(pwd):/app \
-p 5173:5173 \
-w /app \
node:21-alpine \
npm run dev
// 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.
// 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.
// 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.
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.
// 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 npmdev
- supprimez votre certificat actuel et redémarrez votre serveur (tous les détails ici)
GĂ©nĂ©rer des certificats personnalisĂ©s â
Avec mkcert
mkcert -install
mkcert -key-file certs/vite.key.pem -cert-file certs/vite.crt.pem localhost 127.0.0.1
// 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
},
});
npm run dev
symfony serve
rendez-vous Ă cette adresse : https://127.0.0.1:8000