From 0d1bd1909387acb3245e01825a65b440b5013d36 Mon Sep 17 00:00:00 2001 From: implementer Date: Fri, 28 Aug 2026 08:39:13 +0000 Subject: [PATCH] feat: add root build/test/typecheck scripts (E00-S01-T05) Adds root scripts so build, test and typecheck run from the workspace root: - root package.json gains scripts: build (pnpm -r run build), test (node --test on tests/**/*.test.mjs), typecheck (pnpm -r run typecheck) - every workspace package (apps/server, packages/core, extensions/example) gains build (tsc -p tsconfig.json) and typecheck (tsc -p tsconfig.json --noEmit) scripts - typescript 6.0.3 pinned as an exact root devDependency so the commands run from a clean checkout; lockfile regenerated with pnpm 11.23.0 Verified from a clean state: pnpm install --frozen-lockfile passes, pnpm build emits dist for all 3 packages, pnpm typecheck passes for all 3, pnpm test runs tests/architecture-import.test.mjs 10/10 green, and CI's pnpm -r list --depth -1 still lists all 4 workspace projects. Closes #158 --- apps/server/package.json | 4 ++++ extensions/example/package.json | 4 ++++ package.json | 8 ++++++++ packages/core/package.json | 4 ++++ pnpm-lock.yaml | 17 ++++++++++++++++- 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/apps/server/package.json b/apps/server/package.json index eda6b13..da08937 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -4,6 +4,10 @@ "private": true, "type": "module", "description": "EPPP public server application. Bootstrap placeholder — the Fastify 5 application shell lands in a later story.", + "scripts": { + "build": "tsc -p tsconfig.json", + "typecheck": "tsc -p tsconfig.json --noEmit" + }, "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { diff --git a/extensions/example/package.json b/extensions/example/package.json index b81568b..5e6c9c4 100644 --- a/extensions/example/package.json +++ b/extensions/example/package.json @@ -4,6 +4,10 @@ "private": true, "type": "module", "description": "Placeholder extension that exercises the extensions/ workspace group. Real extensions (e.g. theme-amber) replace it in later stories.", + "scripts": { + "build": "tsc -p tsconfig.json", + "typecheck": "tsc -p tsconfig.json --noEmit" + }, "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { diff --git a/package.json b/package.json index 55bf2f8..65f155f 100644 --- a/package.json +++ b/package.json @@ -4,5 +4,13 @@ "private": true, "type": "module", "description": "EPPP — a modular personal blogging platform. Workspace bootstrap (E00-S01).", + "scripts": { + "build": "pnpm -r run build", + "test": "node --test \"tests/**/*.test.mjs\"", + "typecheck": "pnpm -r run typecheck" + }, + "devDependencies": { + "typescript": "6.0.3" + }, "packageManager": "pnpm@11.23.0" } diff --git a/packages/core/package.json b/packages/core/package.json index 14ad9df..8a63217 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -4,6 +4,10 @@ "private": true, "type": "module", "description": "EPPP application core. Bootstrap placeholder — owns application lifecycle, site identity and content primitives in later stories.", + "scripts": { + "build": "tsc -p tsconfig.json", + "typecheck": "tsc -p tsconfig.json --noEmit" + }, "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 708f202..7b797de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,10 +6,25 @@ settings: importers: - .: {} + .: + devDependencies: + typescript: + specifier: 6.0.3 + version: 6.0.3 apps/server: {} extensions/example: {} packages/core: {} + +packages: + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + +snapshots: + + typescript@6.0.3: {}