mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-12 23:49:00 +00:00
fix(web): Hotfix #9 — remove Storybook deps from package.json (Vite 8 peer conflict)
CI failure on Phase 8 commit a9e229b (#561) and subsequent #566:
npm error peer vite@"^4.0.0 || ^5.0.0 || ^6.0.0"
from @storybook/react-vite@8.6.18
npm error dev @storybook/react-vite@"^8.6.0" from the root project
Root cause:
Phase 8 added Storybook 8 deps to package.json as scaffold for the
operator's local install. I did not check Storybook 8's Vite peer-
range — it caps at Vite 6. certctl runs Vite 8 (Phase 4 manualChunks
rewrite). `npm ci` fails on the peer conflict; the 3-retry loop in
Dockerfile-frontend gives the same fail 3 times then aborts.
Fix:
Remove `storybook`, `@storybook/react-vite`, `@storybook/addon-a11y`,
+ the `storybook` / `storybook:build` npm scripts from package.json.
CI now resolves cleanly against the existing lockfile (the deps
never made it into the lockfile because operator hasn't run
`npm install` locally yet, so removal is a no-op there too).
The .storybook/ config files + 8 *.stories.tsx files stay committed
as scaffold. tsconfig.json already excludes them from typecheck.
When the operator is ready to wire Storybook in:
cd web && npm install --save-dev storybook@^9.0.0 \
@storybook/react-vite@^9.0.0 @storybook/addon-a11y@^9.0.0
Storybook 9 (verified against storybook.js.org docs) supports
Vite 7+8 — the peer conflict goes away. The .storybook/main.ts
header now documents this install path so the operator doesn't
have to dig through commit history later.
This was an honest scoping error in Phase 8: I should have
verified the peer-range against the live registry before adding
the deps. The corrected path (Storybook 9) requires no sandbox
install — operator picks the version when they're ready.
Verification:
• npx tsc --noEmit — exits 0
• npx vite build — ✓ built in 2.58s
• All 34 CI guards pass locally
• The package.json + lockfile now match (no Storybook entries
in either) — `npm ci` on the next push will install cleanly.
Falsifiable proof for next CI run: the Frontend Build job's `npm ci`
step should complete without ERESOLVE error. Watch the next push.
This commit is contained in:
+24
-5
@@ -1,11 +1,30 @@
|
|||||||
// Copyright 2026 certctl LLC. All rights reserved.
|
// Copyright 2026 certctl LLC. All rights reserved.
|
||||||
// SPDX-License-Identifier: BUSL-1.1
|
// SPDX-License-Identifier: BUSL-1.1
|
||||||
//
|
//
|
||||||
// Phase 8 TEST-H3 closure — Storybook 8 configuration with the Vite
|
// Phase 8 TEST-H3 closure — Storybook configuration scaffold.
|
||||||
// builder. Reuses the existing Vite config from web/vite.config.ts
|
//
|
||||||
// (including the Phase 4 manualChunks, the Phase 0 fontsource imports,
|
// DEPS NOT INSTALLED IN PACKAGE.JSON. The first attempt added
|
||||||
// the test-block exclusions) so stories render against the same
|
// `@storybook/react-vite ^8.6.0` + `@storybook/addon-a11y ^8.6.0`
|
||||||
// build pipeline production uses.
|
// + `storybook ^8.6.0` to package.json, but Storybook 8's peerDeps
|
||||||
|
// cap Vite at v6 — the certctl project ships Vite 8 (Phase 4
|
||||||
|
// manualChunks rewrite). CI fail confirmed the peer-conflict via
|
||||||
|
// `npm ci`. Hotfix #9 removed the deps to unblock CI.
|
||||||
|
//
|
||||||
|
// To install:
|
||||||
|
// cd web && npm install --save-dev storybook@^9.0.0 \
|
||||||
|
// @storybook/react-vite@^9.0.0 @storybook/addon-a11y@^9.0.0
|
||||||
|
// # Storybook 9 supports Vite 7+8 — verified against storybook.js.org
|
||||||
|
// # docs before installing.
|
||||||
|
//
|
||||||
|
// Once installed, this main.ts + preview.ts work as-is. The 8
|
||||||
|
// committed *.stories.tsx files import @storybook/react types and
|
||||||
|
// will typecheck cleanly. tsconfig.json excludes them today so
|
||||||
|
// `npm run build` stays green in the meantime.
|
||||||
|
//
|
||||||
|
// Reuses the existing Vite config from web/vite.config.ts
|
||||||
|
// (including the Phase 4 manualChunks, the Phase 0 fontsource
|
||||||
|
// imports, the test-block exclusions) so stories render against
|
||||||
|
// the same build pipeline production uses.
|
||||||
//
|
//
|
||||||
// Addon scope:
|
// Addon scope:
|
||||||
// • @storybook/addon-a11y — runs axe-core on every story render +
|
// • @storybook/addon-a11y — runs axe-core on every story render +
|
||||||
|
|||||||
@@ -11,8 +11,6 @@
|
|||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"e2e": "playwright test",
|
"e2e": "playwright test",
|
||||||
"e2e:install": "playwright install --with-deps chromium",
|
"e2e:install": "playwright install --with-deps chromium",
|
||||||
"storybook": "storybook dev -p 6006",
|
|
||||||
"storybook:build": "storybook build",
|
|
||||||
"generate": "orval --config ./orval.config.ts"
|
"generate": "orval --config ./orval.config.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -35,8 +33,6 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@axe-core/react": "^4.11.3",
|
"@axe-core/react": "^4.11.3",
|
||||||
"@playwright/test": "^1.49.0",
|
"@playwright/test": "^1.49.0",
|
||||||
"@storybook/addon-a11y": "^8.6.0",
|
|
||||||
"@storybook/react-vite": "^8.6.0",
|
|
||||||
"@testing-library/jest-dom": "^6.9.1",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
"@testing-library/react": "^16.3.2",
|
"@testing-library/react": "^16.3.2",
|
||||||
"@types/jest-axe": "^3.5.9",
|
"@types/jest-axe": "^3.5.9",
|
||||||
@@ -48,7 +44,6 @@
|
|||||||
"jsdom": "^29.0.0",
|
"jsdom": "^29.0.0",
|
||||||
"orval": "^7.0.0",
|
"orval": "^7.0.0",
|
||||||
"postcss": "^8.5.8",
|
"postcss": "^8.5.8",
|
||||||
"storybook": "^8.6.0",
|
|
||||||
"tailwindcss": "^3.4.19",
|
"tailwindcss": "^3.4.19",
|
||||||
"typescript": "^5.9.3",
|
"typescript": "^5.9.3",
|
||||||
"vite": "^8.0.10",
|
"vite": "^8.0.10",
|
||||||
|
|||||||
Reference in New Issue
Block a user