@massimo-cassandro/minimo 1.33.1 → 1.33.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,8 +26,8 @@
26
26
  "UPD-version": "npx update-version --no-log-v0 --log-file=./changelog.md # --log-patch --pkg=alt/path/to/package.json",
27
27
  "upd@m": "npx upd@m",
28
28
  "launchChrome": "open -n -a 'Google Chrome' --args --profile-directory='Profile 3'",
29
- "python server": "python3 -m http.server 8000 # --directory __dirname__ # 8000 = default port",
30
- "php server": "php -S localhost:8000 # -t root_dir/",
29
+ "python server": "python3 -m http.server [[port8000]] # --directory __dirname__ # 8000 = default port",
30
+ "php server": "php -S localhost:[[port8000]] # -t root_dir/",
31
31
  "symfony server": "symfony serve --port=[[port8000]] --listen-ip=0.0.0.0 # http://192.168.1.135:[[port8000]] # -d (deamon): rimane aperto anche dopo la chiusura del terminale, terminare con `symfony server:stop`",
32
32
  "node server": "node serve # richiede ‘npm i serve’",
33
33
  "build tokens": "npx buildTokens --config ./app/css/tokens-config.mjs",
@@ -49,46 +49,60 @@ PORT_8000="80${PORT_SUFFIX}"
49
49
  PORT_5700="57${PORT_SUFFIX}"
50
50
  echo -e "${DIM}Porte: ${PORT_8000} (server), ${PORT_5700} (webpack dev server)${NC}"
51
51
 
52
- # Pacchetti opzionali: installati come devDependency solo su conferma
53
- # esplicita dell'utente (vedi ciclo di domande più sotto). Include sia
54
- # devDependency "pure" del progetto, sia i peer dependencies opzionali di
55
- # @massimo-cassandro/minimo (vedi package.json di minimo, campi
56
- # peerDependencies/peerDependenciesMeta: elenco mantenuto a mano, non letto
57
- # dinamicamente da minimo — se cambiano va aggiornato manualmente anche qui).
58
- # In entrambi i casi vengono installati con `npm i -D`: in questo progetto
59
- # `dependencies` contiene solo @massimo-cassandro/minimo, tutto il resto
60
- # (tooling di build e librerie usate dai singoli componenti) è devDependency.
61
- # Ogni voce è "<pacchetto>|<descrizione>" (pacchetto allineato a colonna fissa
62
- # solo per leggibilità, non richiesto dal parsing).
52
+ # Pacchetti opzionali: installati solo su conferma esplicita dell'utente
53
+ # (vedi ciclo di domande più sotto). Include sia devDependency "pure" del
54
+ # progetto, sia i peer dependencies opzionali di @massimo-cassandro/minimo
55
+ # (vedi package.json di minimo, campi peerDependencies/peerDependenciesMeta:
56
+ # elenco mantenuto a mano, non letto dinamicamente da minimo — se cambiano va
57
+ # aggiornato manualmente anche qui).
58
+ # Ogni voce è "<pacchetto> | <dev> | <descrizione>" (pacchetto e colonna <dev>
59
+ # allineati a colonna fissa solo per leggibilità, non richiesto dal parsing).
60
+ # La colonna <dev> vale "dev" se il pacchetto va installato con `npm i -D`
61
+ # (devDependency), stringa vuota se va installato con `npm i -S` (dependency
62
+ # vera, es. peer dependency di minimo usata a runtime).
63
63
  optionalPackages=(
64
- "dotenv-webpack | gestione variabili d'ambiente (.env) nel bundle webpack"
65
- "@principalstudio/html-webpack-inject-preload | injection dei tag <link rel=preload> nell'html generato"
66
- "postcss-jit-props | include nel CSS compilato solo le custom properties effettivamente usate"
67
- "@svgdotjs/svg.js | richiesto da charts/ di minimo"
68
- "blurhash | richiesto da unsplash-page di minimo (create-blurhash-canvas)"
69
- "simple-datatables | richiesto da s-datatable-component di minimo"
70
- "style-dictionary | richiesto da design-tokens/utilities di minimo (build-tokens)"
64
+ "dotenv-webpack | dev | gestione variabili d'ambiente (.env) nel bundle webpack"
65
+ "@principalstudio/html-webpack-inject-preload | dev | injection dei tag <link rel=preload> nell'html generato"
66
+ "postcss-jit-props | dev | include nel CSS compilato solo le custom properties effettivamente usate"
67
+ "@svgdotjs/svg.js | | richiesto da charts/ di minimo"
68
+ "blurhash | | richiesto da unsplash-page di minimo (create-blurhash-canvas)"
69
+ "simple-datatables | | richiesto da s-datatable-component di minimo"
70
+ "style-dictionary | dev | richiesto da design-tokens/utilities di minimo (build-tokens)"
71
71
  )
72
72
 
73
+ # Rimuove spazi iniziali/finali da una stringa (usata per i campi estratti
74
+ # da optionalPackages, allineati a colonna fissa con spazi di padding).
75
+ trim() {
76
+ echo "$1" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
77
+ }
78
+
73
79
  # Chiede conferma per un singolo pacchetto opzionale (default: No).
74
80
  ask_optional_pkg() {
75
81
  local pkg="$1"
76
82
  local desc="$2"
77
83
  local reply
78
- read "reply?Installare il pacchetto opzionale '$pkg' (${desc})? [y/N]: "
84
+ echo -e "\n${YELLOW}${pkg}{NC}"
85
+ echo -e "${DIM}${desc}{NC}"
86
+ read "reply?Installare questo pacchetto opzionale? [y/N]: "
79
87
  [[ "$reply" =~ ^[Yy]$ ]]
80
88
  }
81
89
 
82
- selectedOptionalPkgs=()
90
+ selectedOptionalDevPkgs=()
91
+ selectedOptionalDepPkgs=()
83
92
 
84
93
  if [ "$DEBUG" != "TRUE" ]; then
85
94
  echo -e "\n${GREEN}...PACCHETTI OPZIONALI${NC}"
86
95
  for entry in "${optionalPackages[@]}"; do
87
- pkg="${entry%%|*}"
88
- pkg="${pkg%% *}"
89
- desc="${entry#*| }"
96
+ IFS='|' read -r pkg devFlag desc <<< "$entry"
97
+ pkg="$(trim "$pkg")"
98
+ devFlag="$(trim "$devFlag")"
99
+ desc="$(trim "$desc")"
90
100
  if ask_optional_pkg "$pkg" "$desc"; then
91
- selectedOptionalPkgs+=("$pkg")
101
+ if [ "$devFlag" = "dev" ]; then
102
+ selectedOptionalDevPkgs+=("$pkg")
103
+ else
104
+ selectedOptionalDepPkgs+=("$pkg")
105
+ fi
92
106
  fi
93
107
  done
94
108
  fi
@@ -178,16 +192,24 @@ force_cat() {
178
192
  # di copia da usare per ogni file: safe_cat_with_ports confronta e backuppa
179
193
  # il singolo file (sostituzione porte no-op se non contiene placeholder);
180
194
  # force_cat sovrascrive sempre senza controlli (vedi sopra, usata per ./app).
195
+ # Il quinto argomento (opzionale) è una lista di basename (separati da spazio,
196
+ # riferiti al nome del file sorgente, prima di un eventuale rename_fn) da
197
+ # saltare: usato per escludere package-tpl.json, già copiato a parte prima
198
+ # dell'installazione dei pacchetti npm (vedi più sotto).
181
199
  install_tree() {
182
200
  local src_root="$1"
183
201
  local dest_root="$2"
184
202
  local rename_fn="$3"
185
203
  local copy_fn="${4:-safe_cat_with_ports}"
204
+ local exclude="$5"
186
205
  local file rel dir base new_base dest
187
206
  while IFS= read -r file; do
188
207
  rel="${file#"$src_root"/}"
189
208
  dir="$(dirname "$rel")"
190
209
  base="$(basename "$rel")"
210
+ if [ -n "$exclude" ] && [[ " $exclude " == *" $base "* ]]; then
211
+ continue
212
+ fi
191
213
  if [ -n "$rename_fn" ]; then
192
214
  new_base="$("$rename_fn" "$base")"
193
215
  else
@@ -239,6 +261,19 @@ fi
239
261
  echo -e "${GREEN}Files will be installed in: '${FRONTEND_INSTALL_PATH}'${NC}"
240
262
 
241
263
 
264
+ # package.json va creato dal template PRIMA di installare qualunque pacchetto:
265
+ # se non esistesse ancora, i comandi `npm i` più sotto ne genererebbero uno
266
+ # "al volo" privo di scripts/metadati del template, e le dipendenze verrebbero
267
+ # registrate lì; alla successiva install_tree su source_files/root (più sotto)
268
+ # quel package.json risulterebbe diverso dal template e verrebbe spostato in
269
+ # OLD-package.json, perdendo le dipendenze appena installate. Per questo qui
270
+ # si usa safe_cat_with_ports (idempotente, con backup OLD- se il file esiste
271
+ # già con contenuto diverso) e poi si esclude package-tpl.json dalla
272
+ # install_tree sulla root, per non ripetere la copia dopo che npm l'ha
273
+ # già modificato.
274
+ echo -e "\n${GREEN}...package.json${NC}"
275
+ safe_cat_with_ports "${SOURCE_FILES_DIR}/root/package-tpl.json" "package.json"
276
+
242
277
  echo -e "\n${GREEN}...NODE MODULES${NC}"
243
278
 
244
279
  dependencies=(
@@ -283,8 +318,10 @@ devDependencies=(
283
318
  )
284
319
 
285
320
  # pacchetti opzionali selezionati dall'utente (vedi ciclo di domande a inizio
286
- # script), aggiunti all'array di installazione già definito sopra
287
- devDependencies+=("${selectedOptionalPkgs[@]}")
321
+ # script), instradati in devDependencies o dependencies in base alla colonna
322
+ # <dev> di optionalPackages (vedi sopra)
323
+ devDependencies+=("${selectedOptionalDevPkgs[@]}")
324
+ dependencies+=("${selectedOptionalDepPkgs[@]}")
288
325
 
289
326
  if [ "$DEBUG" = "TRUE" ]; then
290
327
  dependencies=( @massimo-cassandro/minimo )
@@ -343,8 +380,10 @@ mkdir -p "$WEBPACK_MODULES_INSTALL_PATH"
343
380
  # rename_root_file), quindi aggiungere/spostare/rinominare file lì non
344
381
  # richiede modifiche a questo script. Per app/ si usa force_cat (nessun
345
382
  # controllo/backup per singolo file, vedi commento su FRONTEND_INSTALL_PATH).
383
+ # package-tpl.json è escluso: già copiato a parte prima dell'installazione
384
+ # dei pacchetti npm (vedi sezione NODE MODULES più sopra).
346
385
  echo -e "${DIM}...root${NC}"
347
- install_tree "${SOURCE_FILES_DIR}/root" "." rename_root_file
386
+ install_tree "${SOURCE_FILES_DIR}/root" "." rename_root_file "" "package-tpl.json"
348
387
  echo -e "${DIM}...app${NC}"
349
388
  install_tree "${SOURCE_FILES_DIR}/app" "${FRONTEND_INSTALL_PATH}" "" force_cat
350
389
 
@@ -377,9 +416,9 @@ force_cat "${MINIMO_PKG_DIR}/design-tokens/tokens-config-sample.mjs" "${FRONTEND
377
416
  force_cat "${MINIMO_PKG_DIR}/dev-tools/create-favicons/src/default-params.mjs" "${FRONTEND_INSTALL_PATH}/favicons/create-favicons-cfg.mjs"
378
417
 
379
418
 
380
- if [ ${#selectedOptionalPkgs[@]} -gt 0 ]; then
419
+ if [ ${#selectedOptionalDevPkgs[@]} -gt 0 ] || [ ${#selectedOptionalDepPkgs[@]} -gt 0 ]; then
381
420
  echo -e "\n${YELLOW}Pacchetti opzionali installati:${NC}"
382
- for pkg in "${selectedOptionalPkgs[@]}"; do
421
+ for pkg in "${selectedOptionalDevPkgs[@]}" "${selectedOptionalDepPkgs[@]}"; do
383
422
  echo -e "${YELLOW} - $pkg${NC}"
384
423
  done
385
424
  echo -e "${YELLOW}Potrebbe essere necessaria una modifica alla configurazione webpack e/o postcss per utilizzare questi pacchetti.${NC}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massimo-cassandro/minimo",
3
- "version": "1.33.1",
3
+ "version": "1.33.3",
4
4
  "description": "Light css framework & utilities",
5
5
  "type": "module",
6
6
  "main": "./index.js",