Nativo, despliegue y CLI
Escritorio y móvil desde el mismo código, un deploy real, y el toolchain completo.
Tauri (escritorio)
nexa add tauri
cd src-tauri && cargo buildGenera un binario real de Windows/macOS/Linux, compilado con cargo — mismo código fuente que la web.
Capacitor (Android/iOS)
nexa add capacitor
npx @capacitor/cli add android
cd android && ./gradlew assembleDebugGenera un proyecto real de Android/iOS. El build de Android se verificó de punta a punta (APK real compilado con Gradle); iOS necesita Xcode.
Despliegue con nginx
nexa add nginx
# genera deploy/nginx.confGenera deploy/nginx.conf real: gzip, cabeceras de seguridad, caché immutable de un año solo para archivos con hash, y un proxy_pass real para rutas dinámicas sin paths.
El CLI completo
nexa build # compila src/pages/**/*.tsx -> dist/
nexa lint # falla si hay avisos, sin escribir dist/
nexa test # dist/ fresco + corre "test" de package.json
nexa dev # recompila en cada request + auto-reloadnexa build/preview/dev/lint/test/add/info — lint falla si hay avisos SEO/paquetes; test compila (dist/ fresco) y corre el test runner del proyecto.
nexa.toml — referencia completa
[project]
name = "mi-sitio"
[dependencies]
ui = "0.1.0"
[imports]
stripe = "/vendor/nexa-stripe.js"
[performance]
maxInitialJS = 15000Todas las secciones son opcionales salvo [project]. Ninguna requiere package.json ni npm.
@nexa/test
import { mountChunk, getEntry } from "@nexa/test";
const entry = getEntry(manifest, 3);
const activate = (await import(entry.module)).default;
const { el } = mountChunk(activate, `<button>Comprar</button>`);
el.click();Para probar un chunk de activación aislado, fuera del navegador real — mountChunk/getEntry/expectEntry contra el manifiesto real.