Intégration Nuxt
⚠️ 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 Nuxt.
Vize offre une intégration Nuxt de premier ordre via le module @vizejs/nuxt . Cela remplace le compilateur Vue par défaut de Nuxt par le compilateur Rust-native de Vize, offrant les mêmes améliorations de vitesse que les projets Nuxt.
Commencer
1. Installer le module
Installez- vp une fois depuis le Vite+ install guide, puis ajoutez le module :
vp install @vizejs/nuxt
Si vous voulez utiliser pkl configuration avec pnpm, vous devrez peut-être installer le paquet vize lui-même.
@vizejs/nuxt installe vize qui vize.pkl avec la configuration par défaut, mais l’emplacement de vize.pkl peut différer lors de l’utilisation de pnpm.
vp install vize
2. Enregistrer le module Nuxt
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compiler: true,
},
});
3. Démarrer Nuxt
Démarrez le serveur de développement comme d’habitude :
vp run dev
Le module injecte @vizejs/vite-plugin dans la configuration Vite de Nuxt et conserve les transformations spécifiques à Nuxt
dans le pipeline, de sorte que les importations automatiques, les composants, le middleware et le comportement SSR continuent de fonctionner via
Nuxt.
Pendant le développement, le nettoyage de réponse serveur préserve des liens Nuxt valides encodés en URL, tels que
%40fs/ et encodés assets/ chemins, tout en supprimant des chemins décodés à octets nuls ou traversés.
Options de modules
@vizejs/nuxt conserve le simple commutateur compiler: true | false, mais les options du module exposent aussi
le compilateur Vize et les ponts de compatibilité Nuxt pour les projets nécessitant un contrôle plus strict :
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compatibility: {
// Usually inferred automatically.
// Nuxt 2 defaults to Vue 2 compatibility mode; Nuxt 3/4 defaults to Vue 3.
vueVersion: 3,
},
compiler: {
// Any @vizejs/vite-plugin option can be passed here.
configMode: "auto",
customRenderer: false,
debug: false,
handleNodeModulesVue: true,
ignorePatterns: ["node_modules/**", ".nuxt/**", ".output/**"],
precompileBatchSize: 64,
scanPatterns: [], // Nuxt defaults to on-demand compilation
sourceMap: true,
vapor: false,
},
bridge: {
autoImports: true,
components: true,
i18n: true,
stableInjectedKeys: true,
},
unocss: {
originalSource: {
maxBytes: 2 * 1024 * 1024,
},
},
dev: {
stylesheetLinks: true,
},
musea: false,
},
});
| Option | Type | Par défaut | Description | |
|---|---|---|---|---|
compatibility |
VizeNuxtCompatibilityOptions |
Détection automatique | Les overrides détectaient les versions majeures de Nuxt/Vue pour des emballages inhabituels. Nuxt 2 applique par défaut la compatibilité hôte-compilateur Vue 2 ; Nuxt 3/4 est par défaut sur Vue 3. Vue 0.11/1/2 utilisent tous le mode hôte-compilateur. | |
compiler |
`boolean \ | VizeNuxtCompilerOptions` | true |
Active Vize comme compilateur SFC Vue. Le passage d’un objet redirige les options vers @vizejs/vite-plugin tout en conservant les valeurs par défaut Nuxt pour root, devUrlBase, scanPatternsà la demande et la gestion SFC de dépendances. |
bridge |
`boolean \ | VizeNuxtBridgeOptions` | true |
Contrôle le pont de transformation Nuxt pour les importations automatiques, importations de composants, aides i18n et clés async-data stables sur des modules virtuels Vize. |
unocss |
`boolean \ | VizeNuxtUnoCssOptions` | true |
Contrôle le pont UnoCSS pour les modules virtuels Vize. originalSource: false désactive la lecture des SFC sources ; maxBytes limite l’utilisation de la mémoire. |
dev.stylesheetLinks |
boolean |
true |
Permet le nettoyage SSR SSR HTML des liens des liens pour les URL Nuxt générées par Vize uniquement pour les développeurs. | |
musea |
`boolean \ | MuseaOptions` | false |
Choisit l’intégration de la galerie Musea. Utilisez true pour les paramètres par défaut de Musea ou passez un objet pour configurer des patterns incluants, des jetons, un CSS d’aperçu et le routage. |
nuxtMusea |
NuxtMuseaOptions |
{ route: { path: "/" } } |
Documente la forme fictive Nuxt utilisée par les assistants de prévisualisation de Musea. Le module Nuxt n’installe pas globalement la couche mock car cela ombrerait la propre #importsde Nuxt. |
Configuration avancée
Nuxt 2 et Legacy Vue
Les projets Nuxt 2 utilisent la sortie du compilateur Vue 2. Le compilateur SFC natif de Vize vise Vue 3, donc le module Nuxt
évite automatiquement de remplacer le compilateur hôte lorsqu’il détecte Nuxt 2. Pour Nuxt 2 Bridge
ou autres configurations Vue 2 basées sur Vite, le plugin Vite reçoit vueVersion: 2, qui garde
@vitejs/plugin-vue2, vue-loader, ou le propre compilateur de Nuxt en charge des fichiers .vue.
Le même mode hôte-compilateur est disponible pour les anciens projets Vue via vueVersion: 0.11,
vueVersion: 1ou vueVersion: "legacy".
Si votre projet enveloppe Nuxt de manière à masquer la version de Nuxt Kit, définissez explicitement la compatibilité la remise en avant :
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compatibility: {
nuxtVersion: 2,
vueVersion: 2,
},
},
});
Utilisation directe du plugin Vite
Sinon, vous pouvez utiliser directement le plugin Vite. Puisque Nuxt utilise Vite en coulisses, cela fonctionne mais manque de certaines optimisations spécifiques à Nuxt :
// nuxt.config.ts
import vize from "@vizejs/vite-plugin";
export default defineNuxtConfig({
vite: {
plugins: [vize()],
},
});
Intégration de la Musea
Le module Nuxt prend également en charge l’intégration de Musea (galerie de composants) :
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compiler: true,
musea: {
include: ["**/*.art.vue"],
tokensPath: "assets/tokens.json",
previewCss: ["assets/styles/main.css", "assets/styles/musea-preview.css"],
previewSetup: "musea.preview.ts",
},
nuxtMusea: {
route: { path: "/" }, // Musea UI route within __musea__
},
},
});
Une fois configurée, la galerie Musea est disponible à /__musea__/ pendant le développement.
Placement des fichiers artistiques
L’auto-découverte des composants Nuxt scanne .vue fichiers à l’intérieur des répertoires de composants configurés. Parce que
fichiers d’art de Musea se terminent aussi par .vue, gardez *.art.vue fichiers en dehors de ces répertoires dans les projets Nuxt
et dirigez Musea à cet endroit :
app/components/Tag.vue
stories/shared/Tag.art.vue
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
musea: {
include: ["stories/**/*.art.vue"],
},
},
});
Lorsque Musea est activé via @vizejs/nuxt, le module exclut également **/*.art.vue du scanner de composants
de Nuxt, de sorte que les fichiers hérités colocalisés n’atteignent pas le webpack ou le pipeline de composants Vite de Nuxt.
Configuration de la prévisualisation pour Nuxt
Les projets Nuxt utilisent souvent des fonctionnalités qui doivent être disponibles dans l’environnement de prévisualisation Musea
(NuxtLink, useRoute, useNuxtApp, useRuntimeConfig, composables de données et composants intégrés de Nuxt
). Utilisez @vizejs/musea-nuxt dans la configuration autonome de Musea Vite et installez sa couche d’aperçu
mock depuis previewSetup:
// vite.config.ts
import { defineConfig } from "vite";
import { musea } from "@vizejs/vite-plugin-musea";
import { nuxtMusea } from "@vizejs/musea-nuxt";
export default defineConfig({
plugins: [
nuxtMusea({
route: { path: "/preview" },
runtimeConfig: { public: { apiBase: "/api" } },
fetchMocks: {
"/api/user": { id: 1, name: "Ada" },
},
}),
musea({
previewSetup: "musea.preview.ts",
}),
],
});
// musea.preview.ts
import { installNuxtMuseaMocks } from "@vizejs/musea-nuxt";
import { createI18n } from "vue-i18n";
import type { MuseaPreviewSetup } from "@vizejs/vite-plugin-musea";
export default ((app) => {
installNuxtMuseaMocks(app, {
route: { path: "/preview" },
runtimeConfig: { public: { apiBase: "/api" } },
});
const i18n = createI18n({
locale: "ja",
messages: {
ja: {
/* ... */
},
en: {
/* ... */
},
},
});
app.use(i18n);
}) satisfies MuseaPreviewSetup;
Comment ça fonctionne
Lorsque le module Nuxt est installé :
Injection de plugins Vite — Le module
@vizejs/vite-pluginenregistre comme un plugin Vite, interceptant.vuecompilation de fichiers.Calle de compatibilité — Le plugin expose une API de compatibilité
@vitejs/plugin-vue, donc les vérifications internes de Nuxt (qui sondent le plugin Vue) fonctionnent correctement.Prise en charge SSR — Le
vize_atelier_ssrde Vize gère la compilation côté serveur. Le plugin isole les variables de l’environnement client et serveur afin d’éviter la contamination croisée.Fonctionnalités Nuxt préservées — Les importations automatiques, composables, middlewares et autres fonctionnalités Nuxt fonctionnent via la propre couche de transformation de Nuxt, qui s’exécute après la compilation de Vize.
Exemple concret
Le site web de la conférence Vue Fes Japan 2026 utilise Vize avec Nuxt 4 :
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compiler: false, // compiler disabled (using Nuxt's default)
musea: {
include: ["**/*.art.vue"],
inlineArt: false,
tokensPath: "assets/tokens.json",
previewCss: ["assets/styles/main.css", "assets/styles/musea-preview.css"],
previewSetup: "musea.preview.ts",
},
},
});
Cette configuration utilise Musea pour le développement et la documentation des composants tout en conservant le compilateur par défaut de Nuxt pour les compilations de production.
Notes
Vize est en développement actif — tester minutieusement avant d’être utilisé en production sur des projets Nuxt
La compilation SSR est prise en charge via
vize_atelier_ssrLes fonctionnalités spécifiques à Nuxt (auto-importations, composables, middleware) fonctionnent via la propre couche de transformation de Nuxt
Le module Nuxt prend en charge, Nuxt 2, Nuxt 3 et Nuxt 4. Nuxt 2 utilise le mode de compatibilité hôte-compilateur car le compilateur SFC natif de Vize cible la sortie Vue 3.