Nexanexa
← Reference

Native, deployment and CLI

Desktop and mobile from the same code, a real deploy, and the full toolchain.

Tauri (desktop)

nexa add tauri
cd src-tauri && cargo build

Generates a real Windows/macOS/Linux binary, compiled with cargo — the same source code as the web version.

Capacitor (Android/iOS)

nexa add capacitor
npx @capacitor/cli add android
cd android && ./gradlew assembleDebug

Generates a real Android/iOS project. The Android build was verified end to end (a real APK compiled with Gradle); iOS needs Xcode.

Deploying with nginx

nexa add nginx
# genera deploy/nginx.conf

Generates a real deploy/nginx.conf: gzip, security headers, a year-long immutable cache only for hashed files, and a real proxy_pass for dynamic routes without paths.

The full CLI

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-reload

nexa build/preview/dev/lint/test/add/info — lint fails if there are SEO/package warnings; test compiles (a fresh dist/) and runs the project's test runner.

nexa.toml — full reference

[project]
name = "mi-sitio"

[dependencies]
ui = "0.1.0"

[imports]
stripe = "/vendor/nexa-stripe.js"

[performance]
maxInitialJS = 15000

Every section is optional except [project]. None of them require package.json or 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();

For testing an isolated activation chunk, outside a real browser — mountChunk/getEntry/expectEntry against the real manifest.