Files
Webklar-Kundenbereich/.superpowers/sdd/2026-09-30-preview-runner/task-2-report.md
T
2026-09-30 21:53:41 +00:00

1.7 KiB

Task 2 Report: Projekterkennung

Implemented runner/src/detect.js (detectProject, detectFromDir) + runner/test/detect.test.js (19 tests). TDD: RED = ERR_ASSERTION / module not found (detect.js missing); first GREEN attempt had 1 failure (devCmd null for build kind) -> fixed; final: runner npm test 27/27 pass.

Return shape

{ kind, pm, install, buildCmd, devCmd, outputDirs, devPort, [index], [hint], [error] }

  • buildCmd/devCmd are set whenever the script exists (also for kind 'build' -> devCmd = dev fallback after failed build, per spec).
  • static: install [], buildCmd/devCmd null, outputDirs [], index = start file (opts.index > previewJson.index > 'index.html'); hint (German) when neither index nor scripts found.
  • Forced mode without script: { kind:'build', ..., buildCmd:null, error:'Kein build-Skript in package.json' } / { kind:'dev', ..., devCmd:null, error:'Kein dev-Skript in package.json' }.
  • auto: index && !build => static; build => build; dev => dev; else static + hint.
  • Invalid package.json JSON => no scripts, never throws. devPort int 1024-65535 else 5173; output/index must be relative without '..' else ignored.

Commands

npm: ci --include=dev (package-lock/npm-shrinkwrap) or install --include=dev --no-audit --no-fund; pnpm/yarn/bun: <pm> install --frozen-lockfile; build <pm> run build. dev: npm/pnpm run dev -- --host 0.0.0.0 --port N; yarn/bun run dev --host 0.0.0.0 --port N (no --, they pass args through). Note: pnpm/yarn in node:20 need corepack (corepack enable) — not handled here (later task).

detectFromDir(dir, opts)

fs adapter (has = isFile); reads .webklar-preview.json as previewJson unless opts.previewJson given; tested with temp dir.