- README : le dev local cible désormais `docker compose up -d postgres` explicitement. `docker-compose.yml` définit aussi le service `app` (celui que Portainer build en prod) — sans nom de service, `docker compose up -d` construisait et démarrait aussi ce conteneur en local, déclenchant un `pnpm install` sur tout le monorepo (donc le `cypress` d'apps/web, avec son téléchargement de binaire) pour une image dont le dev local n'a pas besoin. - Dockerfile (apps/api) : `CYPRESS_INSTALL_BINARY=0` sur le stage `build` — évite le téléchargement du binaire Cypress (~200 Mo, Electron) à chaque build de l'image de prod, qu'il vienne de `docker compose` ou du pipeline de release. Le package `cypress` lui-même reste installé (vraie entrée du lockfile) ; `pnpm prune --prod` puis un wipe+reinstall complet ont été testés pour l'éliminer aussi, mais se sont révélés dangereux dans ce monorepo pnpm (prune ignore les node_modules des autres packages du workspace ; le wipe+reinstall a fait sauter le binding natif compilé d'argon2, crash silencieux au démarrage du conteneur) — pas justifié pour ~10 Mo de JS inerte une fois le téléchargement du binaire évité. - apps/api/package.json : déplace `prisma` (le CLI, invoqué directement par le `CMD` du conteneur pour `migrate deploy`) de devDependencies vers dependencies — classification plus correcte indépendamment du point ci-dessus. Vérifié par un vrai `docker build` + `docker run` contre un Postgres réel (migrations, seed, démarrage du serveur, signup avec hash argon2 réel).
47 lines
1.3 KiB
JSON
47 lines
1.3 KiB
JSON
{
|
|
"name": "api",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "tsx watch src/server.ts",
|
|
"build": "tsc -p tsconfig.json",
|
|
"start": "node dist/server.js",
|
|
"test": "cross-env NODE_ENV=test mocha",
|
|
"test:bdd": "cross-env NODE_ENV=test NODE_OPTIONS=--import=tsx cucumber-js",
|
|
"prisma:generate": "prisma generate",
|
|
"prisma:migrate": "prisma migrate dev",
|
|
"prisma:seed": "prisma db seed",
|
|
"postinstall": "prisma generate"
|
|
},
|
|
"prisma": {
|
|
"seed": "tsx prisma/seed.ts"
|
|
},
|
|
"dependencies": {
|
|
"@batch-cooking/date-tools": "workspace:*",
|
|
"@batch-cooking/error-tools": "workspace:*",
|
|
"@batch-cooking/express-tools": "workspace:*",
|
|
"@batch-cooking/shared": "workspace:*",
|
|
"@prisma/client": "^5.22.0",
|
|
"argon2": "0.31.2",
|
|
"dotenv": "^16.4.5",
|
|
"express": "^4.21.1",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"prisma": "^5.22.0",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@cucumber/cucumber": "^13.2.1",
|
|
"@faker-js/faker": "^10.6.0",
|
|
"@types/express": "^4.17.21",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/node": "^22.9.0",
|
|
"@types/supertest": "^6.0.2",
|
|
"chai": "^5.1.2",
|
|
"cross-env": "^10.1.0",
|
|
"mocha": "^10.8.2",
|
|
"supertest": "^7.0.0",
|
|
"tsx": "^4.19.2",
|
|
"typescript": "^5.7.2"
|
|
}
|
|
}
|