Configuration
Vize utilise vize.config.* pour les commandes de package npm partagées, le plugin Vite et les paramètres de la ligne de commande Rust.
Fichiers de configuration
Le paquet npm commande et @vizejs/vite-plugin charger ces fichiers depuis la racine du projet dans cet ordre de priorité
:
vize.config.pklvize.config.tsvize.config.jsvize.config.mjsvize.config.json
La ligne de commande Rust lit les mêmes noms de fichiers de configuration dans l’ordre ci-dessus pour les paramètres natifs des commandes tels que
check, lint, lspet fmt.
Configuration TypeScript
import { defineConfig } from "vize";
export default defineConfig(({ command, mode, isSsrBuild }) => ({
compiler: {
sourceMap: mode !== "production",
ssr: isSsrBuild,
vapor: false,
customRenderer: false,
templateSyntax: "standard",
},
vite: {
include: [/\.vue$/],
exclude: [/node_modules/],
scanPatterns: ["src/**/*.vue"],
ignorePatterns: ["node_modules/**", "dist/**", ".git/**"],
},
linter: {
enabled: command !== "build",
preset: "happy-path",
},
typeChecker: {
enabled: true,
strict: true,
},
formatter: {
printWidth: 100,
singleQuote: false,
},
lsp: {
lint: true,
typecheck: false,
editor: false,
formatting: false,
},
musea: {
include: ["src/**/*.art.vue"],
basePath: "/__musea__",
},
}));
Résolution de type Vue
Vize ne fixe pas la surface de type de Vue à partir du paquet vize publié : vize check, le langage
le serveur et les commandes package résolvent vue, @vue/compiler-sfc, et types d’ambiance associés issus du projet
analysé, donc les choix de patch, mineurs et pré-release de Vue 3 restent sous le contrôle de ce projet
plutôt que la version utilisée pour construire Vize. Pour des résultats prévisibles, déclarez la version prise en charge de Vue
dans le projet utilisateur (pas via les internes Vize), gardez vue, @vue/compiler-sfc
intégrations comme Nuxt alignées à cet endroit, et exécutez vize check depuis la racine du projet ou un point
typeChecker.tsconfig vers le package cible ; utiliser typeChecker.corsaPath uniquement pour choisir le checker
binaire, jamais pour remplacer les versions de type Vue. Lorsqu’un projet prend en charge plusieurs plages Vue, testez chaque
dans sa propre matrice de paquets afin que Vize suive le graphe de dépendance active, et non un chemin de type codé en dur.
Entrées expérimentales sur le plat
Les monorepos peuvent décrire les paramètres par défaut racines et les overrides à portée de paquet avec entries. Les configurations d’objets
simples sont normalisées en une seule entrée en interne, et les exportations de tableaux sont acceptées par defineConfig pour
création de type ESLint-flat-config.
export default defineConfig({
formatter: {
printWidth: 100,
},
entries: [
{
name: "web app",
basePath: "apps/web",
files: ["src/**/*.vue"],
typeChecker: {
tsconfig: "tsconfig.app.json",
},
},
{
name: "ui package",
basePath: "packages/ui",
files: ["src/**/*.vue"],
formatter: {
singleQuote: true,
},
},
],
});
Configuration PKL
amends "node_modules/vize/pkl/vize.pkl"
compiler {
sourceMap = true
vapor = false
customRenderer = false
templateSyntax = "standard"
}
vite {
scanPatterns = new Listing {
"src/**/*.vue"
}
}
linter {
preset = "happy-path"
}
typeChecker {
enabled = true
strict = true
}
entries = new Listing {
new ConfigEntry {
name = "web app"
basePath = "apps/web"
files = new Listing { "src/**/*.vue" }
typeChecker {
tsconfig = "tsconfig.app.json"
}
}
}
lsp {
lint = true
typecheck = false
editor = false
formatting = false
}
Configuration JSON
{
"$schema": "./node_modules/vize/schemas/vize.config.schema.json",
"compiler": {
"sourceMap": true,
"vapor": false,
"customRenderer": false,
"templateSyntax": "standard"
},
"vite": {
"scanPatterns": ["src/**/*.vue"]
},
"linter": {
"preset": "happy-path"
},
"typeChecker": {
"enabled": true,
"strict": true
},
"musea": {
"include": ["src/**/*.art.vue"],
"basePath": "/__musea__"
}
}
Options du compilateur
Ces options sont placées sous compiler. Ils sont soutenus par un schéma et partagés via defineConfig; Pas
chaque intégration consomme tous les domaines pour l’instant.
| Option | Valeurs | Usage courant |
|---|---|---|
sourceMap |
boolean |
Activer les cartes sources dans le plugin Vite |
ssr |
boolean |
Compiler pour SSR lorsque vous ne dépendez pas du drapeau de compilation SSR de Vite |
vapor |
boolean |
Activer la compilation en mode Vapor |
jsxMode |
"vdom" ou "vapor" |
Backend de sortie par défaut pour les composants .jsx/.tsx |
customRenderer |
boolean |
Considérez les balises minuscules non HTML comme des éléments de rendu personnalisés |
templateSyntax |
"standard", "strict"ou "quirks" |
Choisissez la gestion des avertissements, des erreurs ou des particularités Vue pour la syntaxe des modèles |
scriptExt |
"ts" ou "js" |
Conserver la sortie TS ou décompiler vers JS dans la commande de compilation npm |
mode |
"module" ou "function" |
Mode de sortie de compilateur de bas niveau |
prefixIdentifiers |
boolean |
Identifiants de modèles préfixes avec _ctx |
hoistStatic |
boolean |
Contrôle du levage statique du nœud |
cacheHandlers |
boolean |
Mise en cache du gestionnaire d’événements de contrôle |
isTs |
boolean |
Analyser les blocs de script sous forme de TypeScript |
runtimeModuleName |
string |
Module d’importation à l’exécution de surcharge |
runtimeGlobalName |
string |
Surpasser globalement l’exécution pour la sortie fonction/IIFE |
Pour les projets Vite, les options de plugin direct suppriment la configuration partagée :
import { defineConfig } from "vite";
import vize from "@vizejs/vite-plugin";
export default defineConfig({
plugins: [
vize({
vapor: true,
sourceMap: true,
customRenderer: true,
templateSyntax: "standard",
}),
],
});
Syntaxe des modèles
compiler.templateSyntax par défaut sur "standard".
"standard"accepte une syntaxe invalide récupérable, émet des avertissements et réécrit en sortie valide."strict"rapporte une syntaxe invalide comme étant des erreurs de compilation."quirks"préserve les particularités de compatibilité syntaxique des modèles sans avertissements supplémentaires.
Les cas connus sont :
v-foralias avec une parenthèse d’arête non appariée. Vue dégage une(ou une)de traînée de l’alias précédent il se séparevalue,keyetindex; les modes standard et strict rapportent ces alias comme malformés, tandis que le mode quirk reflète Vue.Éléments HTML non nul écrits avec une syntaxe auto-fermeuse, tels que
<div />ou<span />. mode Standard les avertit et les réécrit comme des éléments vides, des erreurs strictes de mode, et le mode quirk les comme des feuilles qui se ferment automatiquement.
<template>
<!-- Standard/strict reject this. Quirk mode compiles it as `item in items`. -->
<div v-for="(item in items">{{ item }}</div>
<!-- Standard/strict reject this. Quirk mode compiles it as `item in items`. -->
<div v-for="item) in items">{{ item }}</div>
<!-- Standard warns and rewrites this as `<div></div>`. Strict errors. Quirk keeps it as a leaf. -->
<div />
</template>
Implémentation en amont de Vue :
Voir Troubleshooting pour le comportement HTML en mode strict derrière les balises invalides auto-fermantes.
Mode de sortie JSX & TSX
Pour l’API complète d’auteur, les styles à cadrage, la vérification de type, le support de l’éditeur et les limitations, voir le JSX & TSX guide. Cette section ne couvre que les clés de configuration en mode de sortie.
Vize compile les composants Vue .jsx/.tsx en sortie soit en DOM Virtual, soit en sortie
Vapor. compiler.jsxMode sélectionne le **global
par défaut pour les composants qui ne s’inscrivent pas explicitement ; par défaut, il est
"vdom".
// vize.config.ts
import { defineConfig } from "@vizejs/vite-plugin";
export default defineConfig({
compiler: {
// Default every .jsx/.tsx component to Vapor output.
jsxMode: "vapor",
},
});
jsxMode est indépendant de compiler.vapor: vapor bascule Vapor pour .vue SFC, tandis que jsxMode
contrôle le backend par défaut pour JSX/TSX. Un projet peut garder les SFC sur VDOM tout en mettant par défaut JSX sur
Vapor, ou inversement. Le plugin Vite accepte aussi jsxMode directement comme option plugin, ce qui
remplace la configuration partagée.
Directives par composant
Un composant individuel remplace le défaut par un prologue directif, reflétant "use strict":
// Compiled to Vapor regardless of the configured default.
const Fast = () => {
"use vue:vapor";
return <div class="fast" />;
};
// Compiled to Virtual DOM regardless of the configured default.
const Classic = () => {
"use vue:vdom";
return <div class="classic" />;
};
Comme chaque composant est routé indépendamment, un seul module peut mélanger les deux backends :
// vize.config: { compiler: { jsxMode: "vapor" } }
// No directive -> takes the configured default (Vapor here).
export const Dashboard = () => <main>{/* ... */}</main>;
// Opts back into Virtual DOM just for this component.
export const LegacyWidget = () => {
"use vue:vdom";
return <aside>{/* ... */}</aside>;
};
Préséance
Le mode de sortie d’un composant se résout dans cet ordre :
Une directive
"use vue:vapor"/"use vue:vdom"par composant.Le
compiler.jsxModepar défaut depuis la configuration (ou l’optionjsxModedu plugin).Le plan B intégré,
"vdom".
Diagnostic
Une directive qui commence par "use vue:" mais ne nomme pas un mode connu (une faute de frappe comme
"use vue:vdomx") est signalée comme une erreur de compilation plutôt qu’ignorée silencieusement, et deux directives de mode
conflictuelles dans un composant ("use vue:vapor" suivies de "use vue:vdom") sont également
diagnostiquées. Des prologues sans lien comme "use strict" sont laissés intacts.
Dialecte Vue
dialect sélectionne le profil dialectal Vue pour les documents HTML autonomes (.html/.htm) :
{
"dialect": "petite-vue"
}
"vue"considère les documents HTML autonomes comme de simples documents Vue-from-CDN."petite-vue"opte pour intégrer des documents HTML autonomes dans le petite-vue dialecte (complétionsv-scope/v-effectet fonctionnalités IDE sensibles à la petite vue).
Lorsque la clé est absente, le dialecte est détecté structurellement par document : un <script src>
résolvant vers le package petite-vue, une importation ES en ligne de petite-vue, ou un appel PetiteVue.createApp
. Les mentions de petite-vue dans les commentaires ou la prose ne changent jamais de dialecte, et les composantes de
en file indienne utilisent toujours le dialecte standard de Vue.
Options d’analyse statique
Utilisez linter pour le chemin de peluches npm :
export default defineConfig({
linter: {
enabled: true,
preset: "opinionated",
rules: {
"vue/require-v-for-key": "error",
"vue/no-v-html": "warn",
},
},
});
Utilisez typeChecker pour le chemin de vérification du npm :
export default defineConfig({
typeChecker: {
enabled: true,
strict: true,
checkProps: true,
checkEmits: true,
checkTemplateBindings: true,
// Vue 3 Options API template bindings; default-on (matches vue-tsc).
optionsApi: true,
},
});
typeChecker.optionsApi résout les liaisons de modèles API des options de Vue 3
(data/computed/methods/inject/setup/props sur un <script> export default { ... }simple).
Il est livré dans la version standard (pas la fonction legacy), est activé par défaut (correspondant vue-tsc),
et ne fonctionne que pour des composants non<script setup>, de sorte que le chemin commun reste sans coût ; Configurez
optionsApi: false pour vous désinscrire. Le support Legacy Vue 2.7 / Nuxt 2 (typeChecker.legacyVue2, qui ajoute
les globals de modèles Nuxt 2) est un op-in séparé legacy-build.
typeChecker.tsconfig et typeChecker.corsaPath font partie du schéma partagé, mais le chemin Corsa
soutenu par le projet est aujourd’hui la surface Rust CLI. corsaPath est partagé par vize check,
vize lintsensibles au type , et vize lsp (typeChecker.tsgoPath est un alias obsolète) ; la pile
à l’exécution est @typescript/native-preview, la couche API Corsa/corsa-bind, et l’exécutable tsgo
installé. Gardez les déclarations d’ambiance, les fichiers d’auto-importation générés, les alias de chemin et les déclarations Vue
ComponentCustomProperties dans votre tsconfig.jsonde projet, et utilisez un script de paquet
comme vize:check:app pour --tsconfig ou --corsa-path overrides.
{
"typeChecker": {
"corsaPath": "./node_modules/.bin/tsgo",
"servers": 1
}
}
typeChecker.servers est réservé aux futurs pools de travailleurs Corsa. Le runner direct de session de projet
ne supporte actuellement que 1; les valeurs plus élevées échouent rapidement au lieu de faire semblant d’ajuster la concurrence.
Musea Options
La configuration partagée couvre actuellement l’ensemble de fichiers et le routage de la galerie :
export default defineConfig({
musea: {
include: ["src/**/*.art.vue"],
exclude: ["node_modules/**", "dist/**"],
basePath: "/__musea__",
storybookCompat: false,
inlineArt: false,
},
});
Passez directement des options axées sur la présentation telles que previewCss, previewSetup, tokensPath, themeet
storybookOutDir directement pour musea() dans vite.config.ts.