- JavaScript 95.6%
- TypeScript 4.4%
|
All checks were successful
Release / test (push) Successful in 1m42s
Release / Semantic Release (monorepo) (push) Successful in 32s
Release / Release @webgrip/prettier-config (push) Successful in 0s
Release / Semantic Release (monorepo)-1 (push) Successful in 24s
Release / Release @webgrip/eslint-config-astro (push) Successful in 0s
Release / Semantic Release (monorepo)-2 (push) Successful in 31s
Release / Release @webgrip/tsconfig (push) Successful in 0s
Release / Semantic Release (monorepo)-3 (push) Successful in 20s
Release / Release @webgrip/astro-site-toolkit (push) Successful in 0s
Release / Semantic Release (monorepo)-4 (push) Successful in 17s
Release / Release @webgrip/edge-analytics (push) Successful in 0s
Release / Semantic Release (monorepo)-5 (push) Successful in 16s
Release / Release @webgrip/comment-ban (push) Successful in 0s
Release / Mirror to the Forgejo registry (push) Successful in 44s
De rest van het estate (webgrip.nl, cloudflare, infrastructure, counterscale) draait zijn checks op `push: branches: ['**']`, niet op pull_request. Dat dekt een branch al vóórdat er een PR is, en ontwijkt de dubbele run die twente.dev raakte toen een pull_request-trigger elke development-push verdubbelde zolang de promotion-PR openstond. `branches-ignore: main` is het stukje dat die repo's niet nodig hebben: hier is release.yml de eigenaar van main, dus zonder die uitzondering zou elke merge deze checks twee keer draaien. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| packages | ||
| .gitignore | ||
| .prettierignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| renovate.json | ||
frontend-toolkit
Shared frontend toolchain for Webgrip static sites, as versioned packages on the Forgejo npm registry — reference-reuse instead of copy-reuse. Extracted 2026-09-03 after the audit that found the sites' copies drifting (validate-csp: 125 vs 171 lines within a month).
| Package | What | Consumer surface |
|---|---|---|
@webgrip/prettier-config |
The shared Prettier style (Astro-aware) | "prettier": "@webgrip/prettier-config" |
@webgrip/eslint-config-astro |
The shared ESLint flat config | spread + repo-specific overrides |
@webgrip/tsconfig |
Strict TS base for Astro static sites | "extends": "@webgrip/tsconfig/astro-static.json" |
@webgrip/astro-site-toolkit |
CSP validator, prod-faithful dist server, axe engine | bins + /axe-engine import |
Consuming
The packages are public on npmjs.com — install like any dependency, no registry config:
pnpm add -D @webgrip/prettier-config @webgrip/eslint-config-astro @webgrip/tsconfig @webgrip/astro-site-toolkit
The seam rule
What is shared here is what was identical between sites. Per-site decisions — Lighthouse budget numbers, a11y-only page lists, banned-copy tables, repo-specific lint globals — stay in the consumers, on the extension seams each package documents. Do not "upstream" them.
Releasing
Conventional commits; merge to main runs one train per package through the shared
semantic-release-monorepo lane (webgrip/workflows, ADR-0005 toolchain image — nothing installs
at release time). Each train seeds <name>-v0.0.0 at the root commit, so a first feat
releases 0.1.0; tags are <name>-vX.Y.Z. Publishing is dual: the trains publish publicly
to npmjs.com, and the mirror-registry job re-publishes every cut version to the estate's own
Forgejo registry (https://forgejo.webgrip.dev/api/packages/webgrip/npm/) — public reach plus
a sovereign copy. See .forgejo/workflows/release.yml.