Un binario. Un puerto. Todas tus micro-apps.
Comandos · Configuración · Seguridad · Contribuir · Changelog
Wu CLI es un CLI + dev-server nativo en Zig 0.16 para arquitecturas microfrontend (wu-framework). Reemplaza N procesos Vite (uno por micro-app) con un único proceso en un solo puerto que descubre, compila, sirve y hace HMR. Sin dependencias Zig, binario de ~250-460 KB por plataforma, distribuido vía npm.
wu create con menús navegables (↑↓ enter), sin defaults escondidos, raw mode cross-platform.wu serve ya no se cuelga con slowloris./robots.txt, /.well-known/*), challenge HTML libre de XSS..wu-cache/ capado a 500 MB con sweep periódico.wu.config.json migrado a std.json (escape sequences correctos, sin desincronizaciones).Access-Control-Allow-Origin: * ya no se inyecta por defecto; ahora es por regla (cors: true).dev_server.zig adelgazó 10 % extrayendo handlers/proxy.zig y handlers/hmr.zig.build.zig.zon — manifest oficial de paquete Zig (consumible como dependencia, valida versión mínima).npm install -g @wu-framework/cli
Requiere Node.js 16+ para instalar. Node.js 18+ a runtime sólo si usas Vue, Svelte, Solid o Angular (React/Preact corren en Zig puro).
Requiere Zig 0.16.0:
git clone https://github.com/LuisPadre25/wu-cli.git
cd wu-cli
zig build -Doptimize=ReleaseFast
./zig-out/bin/wu --help
wu create my-shop # Wizard interactivo: nombre, shell, micro-apps, TS
cd my-shop
wu dev # Servidor nativo en http://localhost:3000
wu build # Producción → dist/
wu serve # Servir dist/
El wizard genera estructura tipo:
my-shop/
├── wu.config.json ← configuración del proyecto
├── package.json ← deps unificadas
├── shell/ ← el "host" que monta los micro-apps
│ ├── package.json
│ ├── index.html
│ └── src/main.tsx (o .js)
├── mf-catalog/ ← micro-app 1
│ ├── package.json
│ ├── vite.config.js
│ └── src/App.tsx (o .jsx)
└── mf-cart/ ← micro-app 2
└── ...
| Comando | Qué hace |
|---|---|
wu create [name] |
Wizard interactivo (TUI). Con --template <fw> modo no-interactivo. |
wu dev |
Servidor de desarrollo nativo. Un solo proceso, un solo puerto. |
wu build |
Compila todos los micro-apps en paralelo (Vite) → dist/. |
wu serve |
Sirve dist/ con headers de seguridad (timeouts, body-cap). |
wu add <framework> <name> |
Agrega un micro-app a un proyecto existente. |
wu install |
Instala dependencias de todos los micro-apps. |
wu info |
Estado actual del proyecto (apps detectados, puertos, framework del shell). |
Referencia completa con todas las flags: docs/cli.md.
wu.config.json en la raíz del proyecto:
{
"name": "my-shop",
"version": "0.2.2",
"shell": {
"dir": "shell",
"port": 4321,
"framework": "react"
},
"apps": [
{ "name": "catalog", "dir": "mf-catalog", "framework": "react", "port": 5001 },
{ "name": "cart", "dir": "mf-cart", "framework": "vue", "port": 5002 }
],
"proxy": {
"port": 3000,
"open_browser": true,
"/api": { "target": "http://localhost:8080", "rewrite": true, "cors": false }
}
}
Si no existe, wu auto-descubre micro-apps escaneando subdirectorios con vite.config.* + package.json. El directorio llamado shell se promueve a shell del proyecto.
Schema completo, defaults, ejemplos de proxy: docs/configuration.md.
13 frameworks en una sola CLI. Cada micro-app puede usar uno distinto del shell.
| Framework | Extensiones | Compilación | TypeScript |
|---|---|---|---|
| React | .jsx, .tsx | Zig nativo (JSX) → daemon (TSX) | ✓ |
| Preact | .jsx, .tsx | Zig nativo (JSX) → daemon (TSX) | ✓ |
| Vue | .vue | Daemon (esbuild) | ✓ |
| Svelte | .svelte | Daemon (esbuild) | ✓ |
| Solid.js | .jsx, .tsx | Daemon (babel-preset-solid) | ✓ |
| Angular | .ts | Daemon (esbuild bundle) | ✓ |
| Lit | .ts, .js | TS strip | ✓ |
| Stencil | .js | Passthrough | ✓ |
| Alpine.js | .js | Passthrough | – |
| Qwik | .jsx | Passthrough | ✓ |
| HTMX | .js | Passthrough | – |
| Stimulus | .js | Passthrough | – |
| Vanilla | .js, .ts | TS strip | ✓ |
src/
cli/ args, banner, TUI primitives (raw mode, prompts)
commands/ dev, build, create, add, install, serve, info
templates/ 13 plantillas embebidas en el binario
config/ loader (std.json) + auto-discovery
runtime/ ← núcleo del dev server
dev_server.zig thread-per-connection HTTP server (~3.3k LOC)
handlers/ proxy.zig, hmr.zig (extraídos del monolítico)
http_parser.zig SIMD HTTP/1.1, 16 bytes/ciclo
transform.zig reescritura de imports + alias @/ ~/
jsx_transform.zig JSX nativo en Zig (React/Preact)
compile.zig pipeline 3-tier (Zig → daemon → fallback)
resolve.zig resolución NPM pura en Zig
cache.zig 2 niveles (LRU 256 entradas + disco capado 500MB)
ws_protocol.zig WebSocket RFC 6455
hypervisor/ watcher OS-nativo + trie router + transform pool
sentinel/ anti-bot + ACP (AI Content Protocol)
Detalles: docs/contributing.md.
Wu integra varias defensas de bajo nivel:
isPathSafe)./.well-known/acp.json).Configuración para producción y modelo de amenazas: docs/security.md.
npm install -g @wu-framework/cliMIT — ver LICENSE.
Luis Garcia — creador de wu-framework.
© 2026 Wu Framework