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| Comando | Efeito |
|---|---|
npm run dev | Sobe http://localhost:5173 e grava public/hot. A página passa a usar esse servidor, com atualização ao salvar. |
npm run build | Gera 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.jsxO 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/clienteapp/engine/inertia/app.jsxno host do Vite. Sem o preâmbulo a página fica branca. - Produção:
/public/build/assets/theme-{tema}-….jse 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
409e recarrega o documento.
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ãohttp://localhost:5173vite.build_path— padrãobuild, dentro depublic/version— usado quando ainda não existe manifest. Com manifest, a versão é o hash desse arquivo.