refactor(monorepo): remove root package deps, simplify Dockerfiles
Root package.json no longer a workspace member — no src/, no 38 shared dependencies. Root is now workspace config with dev tooling only (biome, drizzle-kit, tsx, typescript). This means Dockerfiles only need: - pnpm-workspace.yaml + pnpm-lock.yaml + package.json (workspace config) - The specific service being built - Only vendor/ packages that service actually depends on (discord-gateway → discord.js-selfbot-v13) Before: each Dockerfile copied src/, vendor/*, packages/*, all services/ After: each Dockerfile copies only its service + needed vendor deps Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
a9fa22262e
commit
3afa6298e3
@@ -10,23 +10,8 @@ COPY pnpm-workspace.yaml .
|
||||
COPY pnpm-lock.yaml .
|
||||
COPY package.json .
|
||||
|
||||
# Copy workspace packages
|
||||
COPY packages/shared ./packages/shared
|
||||
|
||||
# Copy vendor packages (workspace dependencies)
|
||||
COPY vendor/discord.js-selfbot-v13 ./vendor/discord.js-selfbot-v13
|
||||
COPY vendor/discord-video-stream ./vendor/discord-video-stream
|
||||
COPY vendor/better-sqlite3 ./vendor/better-sqlite3
|
||||
COPY vendor/drizzle-orm ./vendor/drizzle-orm
|
||||
|
||||
# Copy root source (root package is a workspace member)
|
||||
COPY src ./src
|
||||
COPY vite.backend.config.ts .
|
||||
|
||||
# Copy services
|
||||
# Copy service
|
||||
COPY services/backend ./services/backend
|
||||
COPY services/frontend ./services/frontend
|
||||
COPY services/discord-gateway ./services/discord-gateway
|
||||
|
||||
# Install dependencies
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
@@ -10,23 +10,11 @@ COPY pnpm-workspace.yaml .
|
||||
COPY pnpm-lock.yaml .
|
||||
COPY package.json .
|
||||
|
||||
# Copy workspace packages
|
||||
COPY packages/shared ./packages/shared
|
||||
|
||||
# Copy vendor packages (workspace dependencies)
|
||||
COPY vendor/discord.js-selfbot-v13 ./vendor/discord.js-selfbot-v13
|
||||
COPY vendor/discord-video-stream ./vendor/discord-video-stream
|
||||
COPY vendor/better-sqlite3 ./vendor/better-sqlite3
|
||||
COPY vendor/drizzle-orm ./vendor/drizzle-orm
|
||||
|
||||
# Copy root source (root package is a workspace member)
|
||||
COPY src ./src
|
||||
COPY vite.backend.config.ts .
|
||||
|
||||
# Copy services
|
||||
# Copy service
|
||||
COPY services/discord-gateway ./services/discord-gateway
|
||||
COPY services/backend ./services/backend
|
||||
COPY services/frontend ./services/frontend
|
||||
|
||||
# Install dependencies
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
@@ -10,23 +10,8 @@ COPY pnpm-workspace.yaml .
|
||||
COPY pnpm-lock.yaml .
|
||||
COPY package.json .
|
||||
|
||||
# Copy workspace packages
|
||||
COPY packages/shared ./packages/shared
|
||||
|
||||
# Copy vendor packages (workspace dependencies)
|
||||
COPY vendor/discord.js-selfbot-v13 ./vendor/discord.js-selfbot-v13
|
||||
COPY vendor/discord-video-stream ./vendor/discord-video-stream
|
||||
COPY vendor/better-sqlite3 ./vendor/better-sqlite3
|
||||
COPY vendor/drizzle-orm ./vendor/drizzle-orm
|
||||
|
||||
# Copy root source (root package is a workspace member — needed for pnpm install)
|
||||
COPY src ./src
|
||||
COPY vite.backend.config.ts .
|
||||
|
||||
# Copy services
|
||||
# Copy service
|
||||
COPY services/frontend ./services/frontend
|
||||
COPY services/backend ./services/backend
|
||||
COPY services/discord-gateway ./services/discord-gateway
|
||||
|
||||
# Install dependencies
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
+9
-64
@@ -3,82 +3,27 @@
|
||||
"version": "1.0.0",
|
||||
"description": "Discord bot that joins a voice channel and records audio",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"packageManager": "pnpm@11.1.3",
|
||||
"scripts": {
|
||||
"prepare:vendor": "pnpm --filter './vendor/*' --filter '!discord.js-selfbot-v13' --if-present run build",
|
||||
"dev": "tsx watch src/index.ts",
|
||||
"dev:server": "tsx watch src/index.ts",
|
||||
"dev:web": "vite --host 0.0.0.0 frontend",
|
||||
"start": "node dist/index.js",
|
||||
"start:dev": "tsx src/index.ts",
|
||||
"build": "pnpm run build:web && pnpm run build:server",
|
||||
"build:web": "vite build frontend --outDir ../public/app --emptyOutDir",
|
||||
"build:server": "vite build --config vite.backend.config.ts",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"dev:backend": "pnpm --filter './services/backend' run dev",
|
||||
"dev:discord-gateway": "pnpm --filter './services/discord-gateway' run dev",
|
||||
"dev:web": "pnpm --filter './services/frontend' run dev",
|
||||
"build:backend": "pnpm --filter './services/backend' run build",
|
||||
"build:discord-gateway": "pnpm --filter './services/discord-gateway' run build",
|
||||
"build:web": "pnpm --filter './services/frontend' run build",
|
||||
"typecheck": "pnpm -r run typecheck",
|
||||
"lint": "biome check --diagnostic-level=error .",
|
||||
"format": "biome format --write .",
|
||||
"test": "vitest run",
|
||||
"test": "pnpm -r run test",
|
||||
"db:generate": "drizzle-kit generate",
|
||||
"db:migrate": "drizzle-kit migrate",
|
||||
"db:migrate:programmatic": "tsx src/database/migrateCli.ts",
|
||||
"db:studio": "drizzle-kit studio",
|
||||
"install:yt-dlp": "sh scripts/install-yt-dlp.sh"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dank074/discord-video-stream": "workspace:*",
|
||||
"@discordjs/opus": "^0.10.0",
|
||||
"@discordjs/voice": "^0.19.2",
|
||||
"@radix-ui/react-scroll-area": "^1.2.10",
|
||||
"@radix-ui/react-slot": "^1.2.4",
|
||||
"@radix-ui/react-tabs": "^1.1.13",
|
||||
"@snazzah/davey": "^0.1.11",
|
||||
"@tanstack/react-query": "^5.100.14",
|
||||
"@types/pg": "^8.20.0",
|
||||
"@vitejs/plugin-react": "^6.0.2",
|
||||
"axios": "^1.16.1",
|
||||
"clsx": "^2.1.1",
|
||||
"discord.js-selfbot-v13": "workspace:*",
|
||||
"dotenv": "^17.4.2",
|
||||
"drizzle-orm": "^0.45.2",
|
||||
"express": "^5.2.1",
|
||||
"helmet": "^8.1.0",
|
||||
"ioredis": "^5.11.0",
|
||||
"libsodium-wrappers": "^0.8.4",
|
||||
"lucide-react": "^1.16.0",
|
||||
"motion": "^12.40.0",
|
||||
"openai": "^6.38.0",
|
||||
"opusscript": "^0.0.8",
|
||||
"p-limit": "^7.3.0",
|
||||
"p-retry": "^8.0.0",
|
||||
"pg": "^8.21.0",
|
||||
"piscina": "^5.1.4",
|
||||
"play-dl": "^1.9.7",
|
||||
"prism-media": "2.0.0-alpha.0",
|
||||
"prom-client": "^15.1.3",
|
||||
"react": "^19.2.6",
|
||||
"react-dom": "^19.2.6",
|
||||
"sharp": "^0.34.5",
|
||||
"tailwind-merge": "^3.6.0",
|
||||
"vite": "^8.0.13",
|
||||
"winston": "^3.19.0",
|
||||
"ws": "^8.20.1",
|
||||
"zod": "^4.4.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "latest",
|
||||
"@tailwindcss/postcss": "^4.3.0",
|
||||
"@types/express": "^5.0.6",
|
||||
"@types/node": "^25.9.0",
|
||||
"@types/react": "^19.2.14",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@types/ws": "^8.18.1",
|
||||
"autoprefixer": "^10.5.0",
|
||||
"drizzle-kit": "^0.31.10",
|
||||
"postcss": "^8.5.14",
|
||||
"tailwindcss": "^4.3.0",
|
||||
"tsx": "^4.22.2",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "latest"
|
||||
"typescript": "^5.9.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
packages:
|
||||
- .
|
||||
- services/frontend
|
||||
- services/backend
|
||||
- services/discord-gateway
|
||||
|
||||
Reference in New Issue
Block a user