# ================================
# 公共基础镜像: 包含所有依赖安装和子包构建
# ================================
FROM node:22.21.1-alpine AS base

WORKDIR /app

# 安装 pnpm
RUN npm install -g pnpm@10.8.1

# 复制项目根目录配置文件
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.prod.json ./

# 复制所有子包的 package.json 文件（优化缓存层）
COPY packages/api/package.json ./packages/api/
COPY packages/components/package.json ./packages/components/
COPY packages/core/package.json ./packages/core/
COPY packages/helpers/package.json ./packages/helpers/
COPY packages/theme/package.json ./packages/theme/
COPY packages/react-app/package.json ./packages/react-app/
COPY packages/platform/package.json ./packages/platform/

# 安装所有依赖
RUN pnpm install

# 复制子包源码
COPY packages/api ./packages/api
COPY packages/components ./packages/components
COPY packages/core ./packages/core
COPY packages/helpers ./packages/helpers
COPY packages/theme ./packages/theme
# components 子包有依赖到 react-app 的 tailwind.config.ts，暂时复制整个 react-app 目录
COPY packages/react-app ./packages/react-app

# 复制构建配置文件
COPY packages/*/tsconfig.json ./packages/*/

# 构建所有公共子包 (@dify-chat/*)
RUN pnpm build:pkgs
