Vite Plugin
⚠️ Travaux en cours : Vize est en développement actif et n’est pas encore prêt pour une utilisation en production. Testez soigneusement avant d’adopter dans des projets non triviaux.
Statut du bundler :
@vizejs/vite-pluginest actuellement l’intégration de bundler la plus stable. Pour le rollup / webpack / esbuild, utilisez@vizejs/unplugin, et pour Rspack, utilisez@vizejs/rspack-plugin. Ces voies non Vite restent instables et doivent être considérées comme expérimentales.
@vizejs/vite-plugin fournit une compilation SFC Vue à vitesse native pour les projets Vite. Il est conçu comme un remplacement direct pour @vitejs/plugin-vue — vos composants Vue existants fonctionnent sans modification.
Installation
Installez vp une fois depuis le Vite+ install guide, puis ajoutez les paquets :
vp install -D @vizejs/vite-plugin
Ajoutez vize comme dépendance directe uniquement si votre projet importe des assistants de configuration partagés depuis "vize"
ou expose des scripts de paquets tels que vize:lint et vize:check.
Usage de base
// vite.config.js
import { defineConfig } from "vite";
import vize from "@vizejs/vite-plugin";
export default defineConfig({
plugins: [vize()],
});
C’est tout. Remplacez @vitejs/plugin-vue par @vizejs/vite-plugin et votre projet sera compilé via Rust.
Importations TypeScript Vue
Ajoutez le package de plugins à compilerOptions.types pour rendre les importations .vue directes résolubles par
TypeScript sans écrire de cale de env.d.ts locale :
{
"compilerOptions": {
"types": ["vite/client", "@vizejs/vite-plugin"]
}
}
Cela ne nécessite pas d’ajouter vize comme dépendance directe du projet.
Pour les projets Vite Plus, gardez le type de client Vite Plus et ajoutez le package de plugins :
{
"compilerOptions": {
"types": ["vite-plus/client", "@vizejs/vite-plugin"]
}
}
Pour la plupart des projets, gardez les options directes de plugins petites et mettez des paramètres de compilateur stables dans
vize.config.ts.
Configuration partagée
Le point d’entrée partagé recommandé est vize. Un seul fichier vize.config.* est lu à la fois par les commandes npm
package et @vizejs/vite-plugin.
vp install -D vize
Fichiers de configuration pris en charge :
vize.config.pklvize.config.tsvize.config.jsvize.config.mjsvize.config.json
Configuration TypeScript :
// vize.config.ts
import { defineConfig } from "vize";
export default defineConfig({
compiler: {
sourceMap: true,
vapor: false,
customRenderer: false,
templateSyntax: "standard",
},
vite: {
scanPatterns: ["src/**/*.vue"],
},
});
Configuration PKL :
amends "node_modules/vize/pkl/vize.pkl"
compiler {
sourceMap = true
}
vite {
scanPatterns = new Listing {
"src/**/*.vue"
}
}
Configuration JSON avec schéma :
{
"$schema": "./node_modules/vize/schemas/vize.config.schema.json",
"vite": {
"scanPatterns": ["src/**/*.vue"]
}
}
Importer defineConfig depuis @vizejs/vite-plugin fonctionne toujours pour la rétrocompatibilité, mais import { defineConfig } from "vize" est le chemin partagé pour la suite.
Voir Configuration pour la configuration partagée complète.
Les projets Vite Plus d’abord peuvent également maintenir les paramètres uniquement de démarrage en ligne dans vite.config.ts:
import { defineConfig } from "vite-plus";
import vize from "@vizejs/vite-plugin";
export default defineConfig({
plugins: [
vize({
config: {
compiler: {
sourceMap: true,
vapor: false,
},
vite: {
scanPatterns: ["src/**/*.vue"],
},
musea: {
include: ["src/**/*.art.vue"],
},
},
}),
],
});
La configuration en ligne est disponible sur le plugin Vite et le store de plugins partagés lors de l’exécution de Vite Plus.
Utilisez vize.config.* pour des réglages qui doivent également être lus par les commandes CLI et LSP.
Options du compilateur
Les options directes ont été transférées à vize() vize.config.*de dérogation.
La priorité complète est des options directes des plugins, puis des configen ligne, puis vize.config.*, puis
valeurs par défaut.
vize({
vueVersion: 3,
sourceMap: true,
ssr: false,
vapor: false,
customRenderer: false,
templateSyntax: "standard",
scanPatterns: ["src/**/*.vue"],
ignorePatterns: ["node_modules/**", "dist/**", ".git/**"],
});
| Option | Où le placer | Description |
|---|---|---|
vueVersion |
vize({ vueVersion }) |
Réglez 0.11, 1, 2ou "legacy" pour exécuter en mode compatibilité Vue non invasif et laissez la compilation SFC au compilateur hôte. |
sourceMap |
compiler.sourceMap ou vize({ sourceMap }) |
Générez des cartes sources. Par défaut, développement activé, production désactivée. |
ssr |
compiler.ssr ou vize({ ssr }) |
Force la compilation SSR quand le drapeau de compilation SSR de Vite ne suffit pas. |
vapor |
compiler.vapor ou vize({ vapor }) |
Compile les modèles via le backend Vapor. |
jsxMode |
compiler.jsxMode ou vize({ jsxMode }) |
Backend de sortie par défaut ("vdom" / "vapor") pour .jsx/.tsx composants. Les directives "use vue:*" par composant l’emportent. |
customRenderer |
compiler.customRenderer ou vize({ customRenderer }) |
Considérez les balises minuscules non HTML comme des éléments de rendu personnalisés. Utile pour les écosystèmes de rendu tels que TresJS. |
templateSyntax |
compiler.templateSyntax ou vize({ templateSyntax }) |
Choisissez "standard", "strict"ou "quirks" gestion de la syntaxe du modèle. |
include |
vite.include ou vize({ include }) |
Des fichiers que le plugin devrait compiler. |
exclude |
vite.exclude ou vize({ exclude }) |
Des fichiers que le plugin devrait ignorer. |
scanPatterns |
vite.scanPatterns ou vize({ scanPatterns }) |
Des motifs glob utilisés pour la précompilation au démarrage. |
ignorePatterns |
vite.ignorePatterns ou vize({ ignorePatterns }) |
Les motifs glob étaient sautés lors de la précompilation au démarrage. |
configMode |
vize({ configMode }) |
Utilisez "root", "auto"ou false pour le chargement de configuration partagé. |
configFile |
vize({ configFile }) |
Chargez un fichier de configuration spécifique. |
config |
vize({ config }) |
Configuration partagée en ligne pour les paramètres d’exécution de Vite Plus. |
handleNodeModulesVue |
vize({ handleNodeModulesVue }) |
Compile .vue fichiers importés depuis node_modules à la demande. |
debug |
vize({ debug }) |
Imprimer les journaux de débogage des plugins. |
Recettes courantes :
// Vapor-oriented build
vize({ vapor: true });
// TresJS or another custom renderer
vize({ customRenderer: true });
// Existing templates that rely on parser edge cases, such as
// v-for alias edge parens or `<div />` as a self-closing leaf
vize({ templateSyntax: "quirks" });
// Monorepo package with explicit scan roots
vize({
root: import.meta.dirname,
scanPatterns: ["src/**/*.vue", "examples/**/*.vue"],
});
// Legacy Vue / Nuxt 2 Bridge project with an existing host compiler plugin
vize({ vueVersion: 2 });
vueVersion: 0.11, 1, 2et "legacy" sont des modes de compatibilité hôte-compilateur. Vize ne compile pas
.vue fichiers dans ces modes, n’expose pas la cale API vite:vue Vue 3, et n’injecte
pas de drapeaux de fonctionnalités du bundler Vue 3. Gardez le plugin de compilateur Vue existant, vue-loader, ou le
propre compilateur de Nuxt 2 configurés normalement.
Comment ça fonctionne
Le plugin intercepte .vue requêtes de fichiers et les compile en utilisant le pipeline Rust-native de Vize via Node.js liaisons NAPI :
Pré-compilation — À
buildStart, le plugin découvre tous les fichiers.vueet les compile en batch à l’aide decompileBatch. Cela déclenche une compilation parallèle basée sur Rayon côté Rust, traitant tous les fichiers sur tous les cœurs CPU simultanément.Compilation à la demande — Pendant le développement, si un fichier
.vueest demandé et n’est pas dans le cache (par exemple, importé dynamiquement), il est compilé à la volée viacompileFile.HMR — Lorsqu’un fichier
.vuechange, seul ce fichier est recompilé. Le plugin détecte si le changement est uniquement de style et applique une mise à jour HMR uniquement de style lorsque c’est possible, évitant ainsi un rerendu complet des composants.Extraction CSS — Dans les montages de production, tout le CSS à portée des composants Vue est extrait et fusionné en
assets/vize-components.css, éliminant ainsi la surcharge d’injection par composant.
Compilation Pipeline
.vue file
→ Armature (Parser) — Tokenizes and parses the SFC structure
→ Croquis (Semantic Analysis) — Analyzes template expressions and bindings
→ Atelier (Compilation) — Generates optimized JavaScript output
→ Vitrine (NAPI Binding) — Delivers the result to Node.js
→ Vite module graph — Served as a virtual module
La même couche d’analyse sémantique est réutilisée par le linting et la vérification de types. Voir Static Analysis pour la partie diagnostic du pipeline.
Comparaison
| Caractéristiques | @vitejs/plugin-vue | @vizejs/vite-plugin |
|---|---|---|
| Langue | JavaScript | Rouille (NAPI) |
| SFC Compilation | Oui | Oui |
| Compilation de modèles | Oui | Oui |
| Configuration du script | Oui | Oui |
| Portée CSS | Oui | Oui |
| Soutien SSR | Oui | Oui |
| HMR | Oui | Oui (optimisation uniquement de style) |
| Précompilation par lots | Non | Oui (parallèle via Rayon) |
| CSS Extraction | Par composant | File indienne fusionnée |
| Mode vapeur | Expérimental | Première classe (vize_atelier_vapor) |
Fonctionnalités avancées
Précompilation par lots
Contrairement à @vitejs/plugin-vue, qui compile chaque fichier .vue dès la première requête, Vize précompile tous les fichiers de .vue découverts au démarrage de la compilation en utilisant la compilation par lots multithread. Cela signifie :
Démarrage du serveur de développement — Tous les composants sont prêts avant le premier chargement de la page
Constructions de production — Parallélisme maximal dès le départ
Réécriture d’actifs statiques
Le plugin réécrit automatiquement les URL des assets statiques dans les modèles. Par exemple :
<template>
<img src="./logo.png" />
</template>
L’attribut src est transféré à une instruction d’importation, permettant à Vite de traiter l’asset via son pipeline d’actifs (hachage, optimisation, etc.).
Définir le remplacement
Vite saute normalement import.meta.* remplacement pour les modules virtuels (préfixé \0). Le plugin de Vize applique manuellement des remplacements de définissage pour s’assurer que les valeurs de import.meta.env.* fonctionnent correctement dans les composants compilés de Vue.
Isolement par environnement
Pour la compatibilité Nuxt, le plugin isole define valeurs par environnement Vite (client vs. serveur/SSR). Cela empêche les valeurs de l’environnement côté client de fuir dans la sortie SSR.
Compatibilité Nuxt
Le plugin expose une cale de compatibilité pour les outils qui sondent l’API de @vitejs/plugin-vue(comme Nuxt). Cela signifie que Vize fonctionne avec l’intégration intégrée de Nuxt à Vue sans configuration spéciale :
// nuxt.config.ts — using the dedicated Nuxt module
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compiler: true,
},
});
Voir Nuxt Integration pour plus de détails.
Notes
Le plugin nécessite
@vizejs/nativepour Node.js liaisons NAPI (installées automatiquement en dépendance)La compilation en mode vapeur est disponible via
vize_atelier_vapor(Vue 3.6+)La compilation VDOM utilise
vize_atelier_domLe plugin prend en charge
virtual:vize-stylespour importer tout le CSS compilé en module.jsx/.tsxcomposants Vue sont compilés automatiquement via le même plugin — voir le guide JSX & TSXPour le support expérimental du rollup / webpack / esbuild / rspack, voir Experimental Bundler Integrations