Operação

Build

O build de assets, o modo watch, sua própria toolchain e arquivos estáticos.

O build de assets transforma os estilos, scripts e textos da interface do projeto nos arquivos que o navegador carrega. PHP e templates não precisam de build: uma mudança num template ou numa biblioteca vale na próxima requisição.

Comandos

./nimbly build      # everything: Tailwind, CSS, JavaScript and texts
./nimbly watch      # build once, then rebuild on every change
Etapa Lê Grava
Tailwind as classes em todo .tpl de core/ e ext/ css/tw/out.css
CSS css/index.css, a saída do Tailwind e ext/theme.css ext/static/app.css
JavaScript js/index.jsx e o que ele importa, incluindo o Alpine ext/static/app.js
Textos os arquivos .po do core e de ext/data/.i18n/ as traduções combinadas

ext/static/app.version muda a cada build, para que os navegadores busquem os arquivos novos. ext/static/app.core registra o commit do core a partir do qual os assets foram gerados; o painel avisa quando o core mudou as entradas do build desde então.

Rode um build depois de uma atualização do core, e depois de mudar estilos, scripts, classes do Tailwind ou arquivos de texto. Faça commit dos arquivos gerados junto com a mudança, ou gere-os na sua pipeline de deploy.

Sua própria toolchain

O build padrão cobre a stack padrão. Uma rota que usa React, Vue, Svelte ou outro conjunto de ferramentas faz o build com as ferramentas desse conjunto. Mantenha o código-fonte e o package.json dele numa pasta própria dentro de ext/, e grave a saída em ext/static/:

// ext/planner/vite.config.js
export default {
  build: {
    outDir: '../static/planner',
    emptyOutDir: true,
    rollupOptions: { input: 'src/main.jsx', output: { entryFileNames: 'main.js', assetFileNames: '[name][extname]' } },
  },
};

Os arquivos em ext/static/ são servidos a partir da raiz do site, então esse build fica em /planner/main.js. Nomes de arquivo fixos mantêm simples o template da rota. Mude a versão no endereço depois de cada build, como em main.js?v=3, para que os navegadores busquem os arquivos novos. Veja Stack de frontend.

Arquivos estáticos

Tudo em ext/static/ é servido como está, e um arquivo ali substitui o arquivo de mesmo nome em core/static/. É assim que um projeto define seu próprio favicon, manifesto de web app e ícones.

Ver esta página em Markdown