Site

Vite

Os comandos rodam na raiz do projeto. O Vite lê system.theme em config/system.php e compilaapp/engine/inertia/app.jsx, que puxa as páginas de themes/{tema}/react. O painel entra no build só se existir themes/panels/.../react/app.jsx.


Comandos

npm install
npm run dev
npm run build
ComandoEfeito
npm run devSobe http://localhost:5173 e grava public/hot. A página passa a usar esse servidor, com atualização ao salvar.
npm run buildGera public/build/manifest.json com as entradas que o tema tiver. React e Vue juntos ficam no mesmo build. inertia.stack só escolhe qual script o HTML carrega.

Com public/hot presente, o HTML aponta para o Vite. Ao encerrar o npm run dev, o arquivo é removido e a página volta ao build.


O que fica no tema

themes/delta/react/
├── app.css
├── layouts/Public.jsx
└── pages/Home.jsx

O cliente não escreve a entrada. app/engine/inertia/app.jsx carrega rotas, mídia, título e o layout padrão. A página de delta não enxerga a página de outro tema. O CSS de react/app.css sai no manifest dessa entrada.


O que o navegador recebe

  • Desenvolvimento: o preâmbulo do React Refresh, @vite/client e app/engine/inertia/app.jsx no host do Vite. Sem o preâmbulo a página fica branca.
  • Produção: /public/build/assets/theme-{tema}-….js e o CSS correspondente.
  • A versão do manifest vai no JSON da página. Se o cliente estiver com outra versão, um GET Inertia responde 409 e recarrega o documento.
🚨Fonte do tema não é pública

themes/*/react/ e arquivos .jsx / .tsx respondem 403. CSS e imagens de themes/{tema}/assets continuam acessíveis. O que o site carrega é só public/build.

Config

config/inertia.php guarda a URL do dev server e a pasta do build:

  • vite.dev_url — padrão http://localhost:5173
  • vite.build_path — padrão build, dentro de public/
  • version — usado quando ainda não existe manifest. Com manifest, a versão é o hash desse arquivo.