Build y empaquetado
Pipeline de producción, artefactos en dist/ y zip para Chroma Desktop.
Comandos
cd Targ-Apps-Finance
npm run buildnpm run build ejecuta chroma build y luego scripts/finish-package.mjs, que:
- Garantiza
chroma.jsonendist/ - Copia las hojas de estilo referenciadas en
index.html(p. ej.src/styles/*.css) —chroma builden modo dynamic no las incluye por defecto - Regenera
Targ-Apps-Finance.zipdesdedist/completo (no solo unzip -uparcial)
Los plugins con manifest (chroma-fs, chroma-style, chroma-t2t) se cargan con import() document-relative desde plugins/loader.js para que funcione tanto en dev como con bundle.js en la raíz del zip.
finish-package.mjs además empaqueta chroma-t2t con esbuild (incluye logic/persist.js, export.js, import.js y dependencias) porque esos módulos no existen sueltos en dist/ tras el bundle principal.
Artefactos
| Ruta | Uso |
|---|---|
dist/ | Build estático servible (bundle, WASM, plugins, manifests) |
dist/chroma.json | Manifest de la app — lista de plugins y metadatos; lo pide plugins/loader.js y Chroma Desktop |
dist/chroma-fs.json | Config de persistencia Chroma-Fs |
Targ-Apps-Finance.zip | Paquete para importar en Chroma Desktop (package.zip: true en chroma.json) |
Los JSON estáticos del repo declaran "$schema" con URL absoluta a docs.targapps.xyz para validación en el editor (p. ej. chroma.json → targ-apps/chroma-app-manifest.schema.json). Catálogo completo en JSON Schemas.
Chroma Desktop extrae el zip bajo <app-data>/apps/<id>/ y sirve los archivos en http://127.0.0.1:47823/<id>/…. El loader hace fetch("./chroma.json") desde la raíz de la app; si falta, los plugins no cargan (404 en consola).
Verificar el zip
unzip -l Targ-Apps-Finance.zip | grep -E 'chroma.json|src/styles/|chroma.plugin.json'Debe listar:
chroma.jsonen la raíz del archivosrc/styles/theme.css,layout.css,finance.cssplugins/chroma-fs/chroma.plugin.json,plugins/chroma-style/chroma.plugin.json,plugins/chroma-t2t/chroma.plugin.json(y susindex.js)