fix(frontend): sync package-lock.json with lucide-react (P0 deploy fail) #345

Merged
lekss361 merged 1 commit from fix/frontend-lucide-react-lockfile into main 2026-05-17 22:30:31 +00:00
Owner

Summary

P0 hotfix — deploy #135 fail on main:

npm error Missing: lucide-react@0.511.0 from lock file
ERROR: failed to build: process "npm ci" did not complete successfully

Root cause

A4 PR #344 добавил lucide-react ^0.511.0 в frontend/package.json но worker не запустил npm installpackage-lock.json не sync'нут → npm ci (требует lockfile match) падает → frontend Dockerfile builder step fails → весь deploy aborts (uses --abort-on-container-exit).

A1 #340 уже импортировал lucide-react в shell (без deps entry — был slip), A4 добавил dep но не lockfile.

Fix

Локальный npm install --legacy-peer-deps regen sync'нул lockfile:

  • Added node_modules/lucide-react@0.511.0 entry
  • Pruned stale transitive deps (webpack/babel/ajv duplicates) — not referenced from any direct dep

Verify

npm run build локально — все 18 routes compile clean. /site-finder 7.57 kB, /site-finder/analysis/[cad] 4.19 kB.

Closes deploy #135 fail.

## Summary **P0 hotfix** — deploy #135 fail on main: ``` npm error Missing: lucide-react@0.511.0 from lock file ERROR: failed to build: process "npm ci" did not complete successfully ``` ## Root cause A4 PR #344 добавил `lucide-react ^0.511.0` в `frontend/package.json` но worker не запустил `npm install` → `package-lock.json` не sync'нут → `npm ci` (требует lockfile match) падает → frontend Dockerfile builder step fails → весь deploy aborts (uses `--abort-on-container-exit`). A1 #340 уже импортировал `lucide-react` в shell (без deps entry — был slip), A4 добавил dep но не lockfile. ## Fix Локальный `npm install --legacy-peer-deps` regen sync'нул lockfile: - ✅ Added `node_modules/lucide-react@0.511.0` entry - ✅ Pruned stale transitive deps (webpack/babel/ajv duplicates) — not referenced from any direct dep ## Verify `npm run build` локально — все 18 routes compile clean. `/site-finder` 7.57 kB, `/site-finder/analysis/[cad]` 4.19 kB. Closes deploy #135 fail.
lekss361 added 1 commit 2026-05-17 22:28:59 +00:00
A4 PR #344 added lucide-react to package.json but didn't regenerate
package-lock.json -> deploy #135 npm ci fails 'Missing: lucide-react
from lock file' -> frontend build breaks -> whole deploy aborts.

Local 'npm install' regen sync'd lockfile and pruned unused webpack/
ajv transitive deps that were stale (build verified OK with new lock,
all 18 routes compile).
Author
Owner

Deep Code Review — verdict APPROVE

Summary

  • Status: APPROVE (P0 hotfix)
  • Files: 1 (frontend/package-lock.json only)
  • Lines: +19 / -637
  • Risk: Low — lockfile-only change, no source code modified

Verification

  • lucide-react@0.511.0 entry present in lockfile root deps (line 14) + node_modules/lucide-react entry with correct registry URL https://registry.npmjs.org/lucide-react/-/lucide-react-0.511.0.tgz and peerDep react ^19
  • All -637 deletions are stale webpack peer transitives (@webassemblyjs/*, terser, terser-webpack-plugin, webpack, webpack-sources, watchpack, schema-utils, ajv-formats, jest-worker, etc.) — all flagged "peer": true in old lockfile, never referenced from direct deps. Next.js 15 bundles its own SWC compiler, doesn't pull webpack into resolved tree.
  • Common shared deps (@types/json-schema, enhanced-resolve, esrecurse, estraverse, graceful-fs, json-schema-traverse, tapable, require-from-string) kept in lockfile — only had "dev": true flag added (correct: devDeps-only now).
  • Direct deps intact: next@15.5.15, react, react-dom, tailwindcss@4.2.4, @tanstack/react-query, leaflet, leaflet-draw, echarts — none deleted.
  • No package.json changes (A4 #344 already had the dep).

Cross-file impact

  • npm ci on deploy will now succeed: lockfile satisfies all package.json dependencies.
  • Frontend Dockerfile builder step (deploy #135 fail) unblocked.

Positive observations

  • Hotfix scope correctly minimal: lockfile-only, no source code drift
  • npm install --legacy-peer-deps was the right tool (echarts/leaflet peer mismatch with React 19)
  • Pruning of stale peers reduces lockfile noise, no functional impact

Merging now to unblock prod deploy.

## Deep Code Review — verdict APPROVE ### Summary - **Status**: APPROVE (P0 hotfix) - **Files**: 1 (`frontend/package-lock.json` only) - **Lines**: +19 / -637 - **Risk**: Low — lockfile-only change, no source code modified ### Verification - `lucide-react@0.511.0` entry **present** in lockfile root deps (line 14) + `node_modules/lucide-react` entry with correct registry URL `https://registry.npmjs.org/lucide-react/-/lucide-react-0.511.0.tgz` and peerDep `react ^19` ✅ - All -637 deletions are stale **webpack peer transitives** (`@webassemblyjs/*`, `terser`, `terser-webpack-plugin`, `webpack`, `webpack-sources`, `watchpack`, `schema-utils`, `ajv-formats`, `jest-worker`, etc.) — all flagged `"peer": true` in old lockfile, never referenced from direct deps. Next.js 15 bundles its own SWC compiler, doesn't pull webpack into resolved tree. - Common shared deps (`@types/json-schema`, `enhanced-resolve`, `esrecurse`, `estraverse`, `graceful-fs`, `json-schema-traverse`, `tapable`, `require-from-string`) **kept** in lockfile — only had `"dev": true` flag added (correct: devDeps-only now). - Direct deps intact: `next@15.5.15`, `react`, `react-dom`, `tailwindcss@4.2.4`, `@tanstack/react-query`, `leaflet`, `leaflet-draw`, `echarts` — none deleted. - No `package.json` changes (A4 #344 already had the dep). ### Cross-file impact - `npm ci` on deploy will now succeed: lockfile satisfies all `package.json` dependencies. - Frontend Dockerfile builder step (deploy #135 fail) unblocked. ### Positive observations - Hotfix scope correctly minimal: lockfile-only, no source code drift - `npm install --legacy-peer-deps` was the right tool (echarts/leaflet peer mismatch with React 19) - Pruning of stale peers reduces lockfile noise, no functional impact Merging now to unblock prod deploy.
lekss361 merged commit 6ee20294f2 into main 2026-05-17 22:30:31 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#345
No description provided.