@elia97/officina 0.9.0 → 0.9.1
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.
- package/README.md +14 -1
- package/dist/lib/check-language.js +3 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,6 +36,8 @@ pnpm add -D @elia97/officina
|
|
|
36
36
|
|
|
37
37
|
I gate leggono dalla cartella corrente, che deve essere la radice del repository. Opzioni comuni dei gate sui sorgenti: `--diff`, `--base <ref>`, `--head <ref>`, `--strict`, `--format text|github`.
|
|
38
38
|
|
|
39
|
+
`check language` vuole in italiano i commenti del codice e i Markdown di documentazione. Lascia fuori per intero ciò che non è documentazione del progetto: i dizionari di `src/i18n/strings/` e i Markdown sotto `src/content/`, che sono copy nelle lingue del sito; le fonti del cliente in `docs/sources/`; i `CHANGELOG.md`, generati in inglese. Un file YAML di `src/content/` invece è codice, e i suoi commenti si controllano come altrove.
|
|
40
|
+
|
|
39
41
|
## Verifiche di build e di produzione
|
|
40
42
|
|
|
41
43
|
| Comando | Cosa guarda | Da dove prende le rotte |
|
|
@@ -169,6 +171,8 @@ Le altre sezioni misurano che il progetto e il pacchetto si muovano insieme:
|
|
|
169
171
|
|
|
170
172
|
`package.json`, `.claude/settings.json`, `biome.json` e `.mcp.json` si leggono come JSON, non cercandoci dentro delle stringhe: `"hooks"` in un valore qualunque non è un blocco `hooks`. I workflow restano una ricerca testuale — non c'è un parser YAML nel pacchetto — ma una riga commentata non soddisfa nessun controllo.
|
|
171
173
|
|
|
174
|
+
**Un requisito nuovo nasce come avviso.** Quando `doctor` impara a chiedere una cosa nuova, la mancanza è un `warning` nella versione che la introduce e diventa un `error` dalla successiva. `doctor` gira dentro `pnpm run ci` senza `--strict`, quindi la PR di Dependabot che porta la versione nuova passa, e il progetto ha una versione di tempo per adeguarsi.
|
|
175
|
+
|
|
172
176
|
## Sviluppo
|
|
173
177
|
|
|
174
178
|
```sh
|
|
@@ -185,13 +189,22 @@ I sorgenti sono TypeScript, ma il pacchetto pubblica JavaScript: Node toglie i t
|
|
|
185
189
|
|
|
186
190
|
## Pubblicare
|
|
187
191
|
|
|
192
|
+
**Una release a settimana**, salvo una rottura che ferma un progetto: le correzioni si accumulano su `main` ed escono insieme. Ogni release è un aggiornamento da portare in ogni progetto e nel template, e il gruppo `officina` di Dependabot lo propone una volta a settimana: rilasciare più spesso non lo fa arrivare prima, moltiplica soltanto le PR da seguire.
|
|
193
|
+
|
|
188
194
|
```sh
|
|
189
|
-
|
|
195
|
+
npm pkg set version=X.Y.Z
|
|
196
|
+
git diff # una riga sola: "version" in package.json
|
|
197
|
+
git commit -am "chore(release): X.Y.Z"
|
|
198
|
+
git tag -a vX.Y.Z -m "vX.Y.Z"
|
|
190
199
|
git push --follow-tags
|
|
191
200
|
```
|
|
192
201
|
|
|
202
|
+
Il tag va creato **annotato**: `--follow-tags` spinge soltanto i tag annotati, e un tag leggero resta in locale senza nessun errore, quindi il rilascio non parte. È successo con la 0.6.0.
|
|
203
|
+
|
|
193
204
|
Il resto lo fa `.github/workflows/release.yml`, sul push di un tag `v*`: controlla che il tag corrisponda a `version`, rilancia il gate, la build e il test del tarball, pubblica su npm con trusted publishing (OIDC) e provenance, e crea la release su GitHub con le note generate. Niente `pnpm publish` dal terminale: quello che finisce su npm esce da un tag, e da nient'altro.
|
|
194
205
|
|
|
206
|
+
Il rilascio è fatto quando lo confermano tre cose: `git ls-remote --tags origin` mostra `vX.Y.Z^{}`, cioè il tag annotato arrivato sul remoto; il workflow «Rilascio» sul tag è verde; `curl -fsS https://registry.npmjs.org/@elia97%2Fofficina/X.Y.Z` risponde con il manifesto della versione. `npm view`, anche con `@X.Y.Z`, passa invece dal documento aggregato del pacchetto, che arriva da una CDN e per qualche minuto dopo la pubblicazione può ancora rispondere 404.
|
|
207
|
+
|
|
195
208
|
Le action si richiamano per tag, quindi **una versione senza tag non è adottabile**: `doctor` chiede ai progetti la stessa versione del pacchetto installato, e un tag che non esiste non si può scrivere in un workflow.
|
|
196
209
|
|
|
197
210
|
Una volta sola, a mano: su npmjs.com il trusted publisher per `Elia97/officina` e `release.yml`; su GitHub un ruleset sui tag `v*` che ne vieta modifica e cancellazione.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { commentBlocks, styleOf } from './comment-syntax.js';
|
|
2
2
|
import { ENGLISH, ITALIAN } from './language-words.js';
|
|
3
3
|
const CODE = /^(?:(?:src|scripts|test|\.claude\/hooks|\.github)\/.*|[^/]+)\.(?:ts|tsx|astro|mjs|cjs|js|css|ya?ml|jsonc)$/;
|
|
4
|
-
// Fuori le fonti del cliente (materiale altrui) e i changelog, generati in inglese
|
|
5
|
-
|
|
4
|
+
// Fuori le fonti del cliente (materiale altrui) e i changelog, generati in inglese; fuori anche
|
|
5
|
+
// src/content/, della stessa natura dei dizionari in LOCALIZED.
|
|
6
|
+
const DOCS = /^(?!docs\/sources\/|src\/content\/)(?!(?:.*\/)?CHANGELOG\.md$).*\.md$/;
|
|
6
7
|
// I dizionari sono copy per l'utente nelle lingue del sito: en e de leggono inglese e tedesco
|
|
7
8
|
// per definizione, ed è il solo posto sotto CODE dove non deve leggersi italiano.
|
|
8
9
|
const LOCALIZED = /^src\/i18n\/strings\//;
|
package/package.json
CHANGED