Clonare il repository, poi eseguire nella cartella del progetto:
npm installper installare le dipendenze.
È necessaria almeno la versione 20.9.0 di Node.
npm run startAvvia il server Fractal Core (port 3000) + Webpack watch + CSS watch in parallelo.
npm run start:serviziAvvia il server Fractal Servizi (port 3010) + Webpack watch + CSS watch.
npm run start:allAvvia entrambi i server Fractal (Core port 3000, Servizi port 3010) condividendo un’unica istanza di Webpack watch e CSS watch, utile per verificare i link incrociati tra le due istanze.
Con quattro processi avviati insieme, nei primi secondi il browser può restituire “Page not found”: i server non hanno ancora completato l’avvio. Ricaricare la pagina quando sono pronti.
npm run buildEsegue in sequenza: clean → webpack prod → build CSS componenti → build CSS bundle → minify CSS → build Fractal Core → build Fractal Servizi → build portal.
npm run build:fractalGenera la build statica Fractal Core in dist/core/. Esegue automaticamente sync:changelog prima del build (via prebuild:fractal).
node scripts/fractal-servizi-build.jsGenera la build statica Fractal Servizi in dist/servizi/.
npm run build:serviziWebpack + CSS componenti + bundle + build statica Fractal Servizi, senza toccare dist/core/ né il portale. Utile per iterare sui soli componenti di 07-widgets/ e 08-servizi/.
npm run build:portalGenera dist/index.html - la pagina che smista verso Core e Servizi - da portal/portale.njk e portal/portale.context.yml, usando l’engine Nunjucks di Fractal. Va eseguito dopo le due build statiche, che devono già esistere quando la pagina le linka. È l’ultimo passo di npm run build.
npm run build:webpackProduce public/js/componentsJs.js - il JavaScript di tutti i componenti - più public/css/core.css e public/css/main.css, dalle entry in assets/css/. È il primo passo di npm run build.
npm run build:components # tutti i componenti
npm run build:components:servizi # solo 08-servizi/
npm run build:components:widgets # solo 07-widgets/Compila i CSS individuali di ogni componente.
npm run build:bundle # tutti i bundle definiti - oggi solo servizi
npm run build:bundle:servizi # lo stesso bundle, indicato esplicitamentescripts/build-bundle-css.js definisce un solo bundle, servizi: aggrega i *.built.css di 07-widgets/ e 08-servizi/ in public/css/servizi.css. I due comandi qui sopra fanno quindi la stessa cosa.
core.css non passa di qui: lo produce webpack, insieme a main.css e a componentsJs.js.
npm run minify-css # main.css → main.min.css (monolite pre-split)
npm run minify-css:core # core.css → core.min.css
npm run minify-css:servizi # servizi.css → servizi.min.cssI tre bundle hanno ciascuno il proprio minificato. main.min.css esiste ancora perché il wrapper di preview di Fractal carica il monolite; il pacchetto di distribuzione spedisce core.min.css e servizi.min.css.
npm run build:package # canale staging → dist/rtds-current.zip
npm run build:release # canale release → dist/rtds-{version}.zipUn unico assemblatore (scripts/build-package.js) per i due canali: monta il pacchetto in una cartella temporanea di sistema, renderizza i componenti via API Fractal, riscrive i path degli asset in base alla profondità di ogni file, prepara il sottoinsieme cdn/, verifica che ogni riferimento risolva e comprime il risultato in dist/.
La verifica finale interrompe la build se uno snippet referenzia un asset che non esiste nel pacchetto, o se una url() di un CSS assemblato non risolve: è il modo in cui un componente nuovo con un asset dimenticato si fa notare, invece di produrre un archivio rotto in silenzio.
La cartella di lavoro vive nella temp di sistema e sparisce a fine script. Su build fallita resta, e lo script ne stampa il percorso; --keep la conserva anche a build riuscita.
npm run build:stagingEsegue npm run build + npm run build:temp + npm run build:package.
npm run build:tempCostruisce le due istanze Storybook in dist/temp/core/ e dist/temp/servizi/ e genera l’indice dist/temp/index.html che le collega. Scrive solo sotto dist/temp/: a differenza di build:storybook:core/:servizi, non sovrascrive le build statiche di Fractal.
npm run cleanCancella l’intera cartella dist/.
Storybook è configurato nel progetto come predisposizione per un futuro workflow di documentazione. Gli script sono disponibili ma non fanno parte del flusso di sviluppo corrente.
npm run storybook:core # port 6006
npm run storybook:servizi # port 6007npm run build:storybook:core # output: dist/core/
npm run build:storybook:servizi # output: dist/servizi/Attenzione: le due destinazioni sono le stesse delle build statiche di Fractal, che vengono quindi sovrascritte. La build di staging usa infatti build:temp, che scrive in dist/temp/.
npm run generate-storybook-assetsRigenera i .stories.js e le cartelle _html/ dei componenti, che non sono versionati. Ogni comando Storybook qui sopra lo invoca già da sé; serve a mano solo per allineare gli asset senza avviare né buildare Storybook.
npm run build-svg-spriteGenera public/icons.svg dallo sprite SVG in public/svgs/.
npm run build-svgsCompila lo sprite SVG e aggiorna i file .config.yml dei componenti icone.
npm run releaseAvvia release-it: bump della versione, generazione della sezione tecnica del CHANGELOG.md dai conventional commit, commit di rilascio, tag e push. Prima del tag esegue in automatico normalize:changelog e build:release, così la zip versionata è prodotta dallo stesso codice che sta per essere taggato.
npm run normalize:changelogFonde nella stessa sezione di versione la parte scritta a mano per chi integra il DS - il blocco [Da rilasciare] - e la parte tecnica generata dai commit. È invocato da npm run release: a mano serve solo per verificare l’esito su una sezione già scritta.
npm run sync:changelogCopia CHANGELOG.md dalla root in docs/fondamenta/changelog.md per renderlo navigabile in Fractal. Eseguito automaticamente prima di ogni build:fractal.
npm run zip-images # nome: images.zip
npm run zip-images-with-date # nome: images-YYYYMMDD-HHMMSS.zipCrea un archivio ZIP della cartella public/images/.
npm run build-html-snippetsCopia le cartelle components/**/_html/ - generate da migrate-to-stories.js - in dist/html-snippets/.
Nessuna build lo invoca e oggi niente consuma il suo output: il pacchetto di distribuzione renderizza i componenti da sé tramite l’API di Fractal, e Storybook usa le _html/ generate accanto ai sorgenti, non questa copia. dist/html-snippets/ è stata rimossa dal repository. Lo script resta come residuo del meccanismo precedente.