Fix TypeScript config for .ts import extensions

- allowImportingTsExtensions: true + noEmit: true in tsconfig
- build script runs tsc --noEmit (type-check only)
- Dockerfile simplified to single stage using tsx at runtime
  (no tsc compilation needed; tsx handles .ts imports natively)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-03 16:02:29 -08:00
parent 6d8fb9105d
commit 8d5e5c8a4d
3 changed files with 8 additions and 26 deletions

View File

@@ -1,5 +1,4 @@
# Build stage
FROM node:22-alpine AS build
FROM node:22-alpine
# Install native build tools for bcrypt
RUN apk add --no-cache python3 make g++
@@ -11,24 +10,10 @@ RUN npm ci
COPY tsconfig.json ./
COPY src ./src
RUN npm run build
# Runtime stage
FROM node:22-alpine AS runtime
RUN apk add --no-cache python3 make g++
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist
COPY public ./public
RUN mkdir -p /app/data/uploads
EXPOSE 3000
CMD ["node", "dist/index.js"]
CMD ["node", "--import", "tsx", "src/index.ts"]

View File

@@ -5,7 +5,7 @@
"type": "module",
"main": "dist/index.js",
"scripts": {
"build": "tsc",
"build": "tsc --noEmit",
"dev": "tsx src/index.ts",
"test": "vitest run",
"test:watch": "vitest",

View File

@@ -1,18 +1,15 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "Bundler",
"outDir": "dist",
"rootDir": "src",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"allowImportingTsExtensions": true,
"noEmit": true,
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true
"resolveJsonModule": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "tests"]