Files
vas3k-TaxHacker/package.json
Evgenii Burmakin 25f46de032 fix: repair Docker build (lockfile sync + email type deps) (#103)
The GHCR Docker build was failing on `npm ci` because package-lock.json
was out of sync with package.json (the lock was generated with npm 11 /
Node 24, while the build image node:23-slim ships npm 10.9, which rejects
the inconsistent optional-dependency entries for esbuild/webpack/picomatch).

Regenerating the lock with npm 10.9 unmasked two further pre-existing
build failures, both caused by `next build` running under the Dockerfile's
NODE_ENV=production (which makes `npm ci` omit devDependencies):

- @types/imap and @types/mailparser were in devDependencies, so they were
  absent during the production build and the type-check failed on the
  mailparser/imap-simple imports. Moved them to dependencies, matching the
  existing convention already used for @types/mime-types and @types/sharp.
- vitest.config.ts and the *.test.ts files import the vitest devDependency,
  which next build type-checked and could not resolve. Excluded them from
  tsconfig so the production build does not type-check test files.

Verified by building the image end-to-end (linux/amd64) with node:23-slim:
npm ci, npm run build, and image export all succeed.
2026-06-19 07:40:35 +02:00

88 lines
2.5 KiB
JSON

{
"name": "taxhacker",
"version": "0.5.5",
"private": true,
"type": "module",
"scripts": {
"dev": "next dev -p 7331 --turbopack",
"build": "next build",
"start": "prisma migrate deploy && next start",
"lint": "next lint",
"email:sync": "npx tsx \"app/(app)/apps/email/scripts/fetch-emails.ts\"",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@fast-csv/format": "^5.0.2",
"@fast-csv/parse": "^5.0.2",
"@langchain/core": "^0.3.80",
"@langchain/google-genai": "^0.2.14",
"@langchain/mistralai": "^0.2.1",
"@langchain/openai": "^0.6.1",
"@prisma/client": "^6.6.0",
"@radix-ui/colors": "^3.0.0",
"@radix-ui/react-avatar": "^1.1.3",
"@radix-ui/react-checkbox": "^1.1.4",
"@radix-ui/react-collapsible": "^1.1.3",
"@radix-ui/react-dialog": "^1.1.6",
"@radix-ui/react-dropdown-menu": "^2.1.6",
"@radix-ui/react-label": "^2.1.2",
"@radix-ui/react-popover": "^1.1.6",
"@radix-ui/react-select": "^2.1.6",
"@radix-ui/react-separator": "^1.1.2",
"@radix-ui/react-slot": "^1.2.0",
"@radix-ui/react-tooltip": "^1.1.8",
"@react-pdf/renderer": "^4.3.0",
"@sentry/nextjs": "^9.11.0",
"@types/imap": "^0.8.43",
"@types/mailparser": "^3.4.6",
"@types/mime-types": "^2.1.4",
"@types/sharp": "^0.31.1",
"better-auth": "^1.2.10",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^3.6.0",
"imap-simple": "^5.1.0",
"jszip": "^3.10.1",
"langchain": "^0.3.30",
"lucide-react": "^0.475.0",
"mailparser": "^3.9.9",
"mime-types": "^3.0.1",
"next": "^15.2.4",
"next-themes": "^0.4.4",
"pdf2pic": "^3.1.4",
"react": "^19.0.0",
"react-day-picker": "^8.10.1",
"react-dom": "^19.0.0",
"react-resizable-panels": "^2.1.7",
"resend": "^4.2.0",
"sharp": "^0.33.5",
"slugify": "^1.6.6",
"sonner": "^2.0.1",
"stripe": "^18.0.0",
"tailwind-merge": "^3.0.1",
"tailwindcss-animate": "^1.0.7",
"zod": "^3.24.2"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "15.1.7",
"postcss": "^8",
"prisma": "^6.6.0",
"tailwindcss": "^3.4.1",
"typescript": "^5",
"vitest": "^4.1.8"
},
"overrides": {
"react-day-picker": {
"react": "^19.0.0"
}
}
}