Integração Nuxt
⚠️ Trabalho em andamento: O Vize está em desenvolvimento ativo e ainda não está pronto para uso em produção. Teste cuidadosamente antes de adotar em projetos Nuxt.
O Vize oferece integração Nuxt de primeira classe por meio do módulo @vizejs/nuxt . Isso substitui o compilador padrão do Vue da Nuxt pelo compilador Rust-native da Vize, proporcionando as mesmas melhorias de velocidade nos projetos Nuxt.
Começando
1. Instalar o Módulo
Instale vp uma vez a partir do Vite+ install guide, depois adicione o módulo:
vp install @vizejs/nuxt
Se quiser usar pkl configuração com pnpm, talvez precise instalar o próprio pacote vize.
@vizejs/nuxt instala vize que atende vize.pkl com configuração padrão, mas a localização da vize.pkl pode variar ao usar o pnpm.
vp install vize
2. Registrar o módulo Nuxt
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compiler: true,
},
});
3. Iniciar o Nuxt
Comece o servidor de desenvolvimento como de costume:
vp run dev
O módulo injeta @vizejs/vite-plugin na configuração do Vite do Nuxt e mantém transformações específicas do Nuxt
no pipeline, então auto-importações, componentes, middleware e comportamento SSR continuam funcionando
Nuxt.
Durante o desenvolvimento, a limpeza de resposta do servidor preserva links válidos de ativos Nuxt codificados por URL,
como %40fs/ e caminhos codificados assets/ , enquanto descartam caminhos de byte nulo decodificados ou de travessia.
Opções de Módulo
@vizejs/nuxt mantém o simples compiler: true | false switch, mas as opções do módulo também expõem
o compilador Vize e as pontes de compatibilidade Nuxt para projetos que precisam de controle mais rigoroso:
// 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,
},
});
| Opção | Tipo | Padrão | Descrição | |
|---|---|---|---|---|
compatibility |
VizeNuxtCompatibilityOptions |
Auto-detectado | As sobrescrituras detectaram versões maiores do Nuxt/Vue para embalagens incomuns. O Nuxt 2 utiliza por padrão a compatibilidade host-compilador do Vue 2; O Nuxt 3/4 é o padrão do Vue 3. O Vue 0.11/1/2 todos usam o modo host-compilador. | |
compiler |
`boolean \ | VizeNuxtCompilerOptions` | true |
Habilita o Vize como compilador SFC do Vue. Passar um objeto encaminha opções para @vizejs/vite-plugin enquanto mantém os padrões Nuxt para root, devUrlBase, scanPatternssob demanda e gerenciamento de SFC de dependência. |
bridge |
`boolean \ | VizeNuxtBridgeOptions` | true |
Controla a ponte de transformação Nuxt para autoimportações, importações de componentes, auxiliares i18n e chaves de dados assíncronas estáveis em módulos virtuais do Vize. |
unocss |
`boolean \ | VizeNuxtUnoCssOptions` | true |
Controla a ponte UnoCSS para módulos virtuais Vize. originalSource: false desativa a leitura de SFCs de fonte; maxBytes limita o uso de memória. |
dev.stylesheetLinks |
boolean |
true |
Permite a limpeza de links de SSR HTML apenas para desenvolvedores para URLs de assets Nuxt gerados pelo Vize. | |
musea |
`boolean \ | MuseaOptions` | false |
Opta pela integração com a galeria Musea. Use true para os padrões do Musea ou passe um objeto para configurar padrões de inclusão, tokens, CSS de pré-visualização e roteamento. |
nuxtMusea |
NuxtMuseaOptions |
{ route: { path: "/" } } |
Documenta a forma simulada Nuxt usada pelos ajudantes de pré-visualização do Musea. O módulo Nuxt não instala a camada mock globalmente porque isso faria sombra para a própria #importsdo Nuxt. |
Configuração Avançada
Nuxt 2 e Legacy Vue
Projetos Nuxt 2 usam saída do compilador Vue 2. O compilador SFC nativo do Vize mira o Vue 3, então o módulo Nuxt
evita automaticamente substituir o compilador host quando detecta o Nuxt 2. Para Nuxt 2 Bridge
ou outras configurações baseadas em Vite com Vue, o plugin Vite recebe vueVersion: 2, que mantém
@vitejs/plugin-vue2, vue-loader, ou o próprio compilador da Nuxt encarregado de .vue arquivos.
O mesmo modo host-compilador está disponível para projetos antigos do Vue via vueVersion: 0.11,
vueVersion: 1ou vueVersion: "legacy".
Se seu projeto envolve o Nuxt de uma forma que oculta a versão do Nuxt Kit, defina explicitamente a compatibilidade override:
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
compatibility: {
nuxtVersion: 2,
vueVersion: 2,
},
},
});
Usando o plugin Vite Diretamente
Alternativamente, você pode usar o plugin Vite diretamente. Como a Nuxt usa o Vite por baixo, isso funciona, mas carece de algumas otimizações específicas para a Nuxt:
// nuxt.config.ts
import vize from "@vizejs/vite-plugin";
export default defineNuxtConfig({
vite: {
plugins: [vize()],
},
});
Integração de Musea
O módulo Nuxt também suporta integração com Musea (galeria de componentes):
// 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__
},
},
});
Quando configurada, a galeria Musea está disponível em /__musea__/ durante o desenvolvimento.
Posicionamento de Arquivos de Arte
A descoberta automática de componentes Nuxt escaneia arquivos .vue dentro de diretórios de componentes configurados. Como
arquivos de arte de Musea também terminam em .vue, mantenha *.art.vue arquivos fora desses diretórios nos projetos Nuxt
e aponte Musea para esse local:
app/components/Tag.vue
stories/shared/Tag.art.vue
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
musea: {
include: ["stories/**/*.art.vue"],
},
},
});
Quando o Musea é ativado por meio do @vizejs/nuxt, o módulo também exclui **/*.art.vue do scanner de componentes
da Nuxt, para que arquivos legados colocalizados não cheguem ao webpack ou pipeline de componentes Vite da Nuxt.
Configuração de Prévia para Nuxt
Projetos Nuxt frequentemente usam recursos que precisam estar disponíveis no ambiente de visualização do Musea
(NuxtLink, useRoute, useNuxtApp, useRuntimeConfig, composáveis de dados e componentes
Nuxt integrados). Use @vizejs/musea-nuxt na configuração independente do Musea Vite e instale sua camada de visualização
mock a partir de 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;
Como Funciona
Quando o módulo Nuxt é instalado:
Injeção de plugin Vite — O módulo
@vizejs/vite-pluginregistra como um plugin Vite, interceptando.vuecompilação de arquivos.Calço de compatibilidade — O plugin expõe uma API de compatibilidade
@vitejs/plugin-vue, então as verificações internas do Nuxt (que sondam o plugin Vue) funcionam corretamente.Suporte SSR — O
vize_atelier_ssrda Vize cuida da compilação do lado do servidor. O plugin isola variáveis do ambiente cliente e servidor para evitar contaminação cruzada.Recursos Nuxt preservados — Autoimportações, composáveis, middleware e outros recursos Nuxt funcionam através da própria camada de transformação do Nuxt, que roda após a compilação do Vize.
Exemplo do Mundo Real
O site da conferência Vue Fes Japan 2026 usa Vize com 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",
},
},
});
Essa configuração usa o Musea para desenvolvimento de componentes e documentação, mantendo o compilador padrão da Nuxt para compilações de produção.
Notas
O Vize está em desenvolvimento ativo — teste minuciosamente antes de usar em projetos Nuxt em produção
A compilação SSR é suportada via
vize_atelier_ssrRecursos específicos do Nuxt (autoimportações, composáveis, middleware) funcionam pela própria camada de transformação do Nuxt
O módulo Nuxt suporta Nuxt 2, Nuxt 3 e Nuxt 4. O Nuxt 2 usa o modo de compatibilidade host-compilador porque o compilador SFC nativo do Vize mira a saída do Vue 3.