Void
Void construit des applications full-stack sur Vite et les exécute sur workerd de Cloudflare. Son adaptateur Vue, @void/vue, rend pages/ côté serveur et les hydrate dans le navigateur. Ajoutez vize() à côté : Vize compile chaque fichier .vue, et Void garde le routage, les loaders, les îlots et les bindings.
Warning
Vize est en développement actif. Comparez la sortie de build et les diagnostics sur votre propre application avant de l'adopter, et consultez l'état du support.
Installation
1. Installer le plugin
npm install -D @vizejs/vite-plugin
2. Ajouter vize() à vite.config.ts
import { voidVue } from "@void/vue/plugin";
import { vize } from "@vizejs/vite-plugin";
import { defineConfig } from "vite";
import { voidPlugin } from "void";
export default defineConfig({
plugins: [voidPlugin(), vize(), voidVue()],
});
voidVue() embarque son propre @vitejs/plugin-vue. Inutile de le retirer : vize() le remplace pour qu'un seul compilateur traite chaque SFC. Si vous définissez exclude, plugin-vue reste et compile les fichiers que Vize ignore.
3. Lancer Void comme d'habitude
npx vite dev
npx vite build
Aucun autre changement n'est nécessaire :
- Rendu serveur sur workerd. Vue et
vue/server-renderersont intégrés au worker, car workerd n'a pas denode_modulesà importer. - CSS et préchargements des routes. Le manifeste client est indexé par chemin source (
pages/index.vue), la clé que Void utilise pour ajouter la feuille de style d'une route au HTML rendu côté serveur. - HMR dans
vite dev. Modifier un template conserve l'état du composant. Les props des loaders restent en place. - Props de page.
defineProps<Props>()avecPropsimporté d'un loader.server.tsse compile comme avec plugin-vue.
Vérification des types
Void génère .void/tsconfig.json avec les types des routes, de l'environnement et des bindings ; votre tsconfig.json l'étend. Exécutez void prepare une fois (ou lancez le serveur de développement) pour créer ces fichiers, puis vérifiez :
npx void prepare
vize check
vize check lit les files et paths générés ; dans les fichiers .vue, ces éléments sont typés comme avec vue-tsc :
- les props des loaders via
InferProps<typeof loader>, fetchdevoid/client(chemins, méthodes et corps de réponse des routes),envdevoid/envet les modules de binding commevoid/kv.
Lint et formatage
vize lint et vize fmt trouvent vos fichiers depuis la racine du projet et ignorent ce que liste .gitignore. Le .gitignore de Void couvre dist, .void, .wrangler et .void-wrangler.jsonc : les fichiers générés ne sont ni analysés ni reformatés.
Éditeur
Le serveur de langage utilise le même tsconfig.json. Exécutez void prepare avant d'ouvrir le projet pour que les types générés existent.
Comment c'est testé
À chaque modification du plugin Vite ou du compilateur natif, la CI construit une application Void 1.1.12 épinglée avec @void/vue (tools/support/compat/void/fixtures/void-vue) et vérifie :
- le build de production et le SSR dans
vite previewsur workerd (CSS des routes et binding KV compris) ; - le SSR en développement, l'hydratation et un HMR qui conserve l'état ;
- que
vize checketvue-tscsignalent les mêmes erreurs ; vize lintetvize fmt --check.
Nuxt sur Void (voidPlugin() dans nuxt.config.ts) n'est pas encore couvert par cette fixture. Utilisez l'intégration Nuxt dans ce cas.