/
kochkatech
/
CorpGame
Обзор
Документация
Войти
/
kochkatech
/
CorpGame
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
dev
backend/src/common/app-paths.ts
39 строк
2 KB
kochkareal
feat(devops): свод к одному процессу Node на SQLite, портативная сборка без Docker; аудит безопасности
06 авг 2026, 15:06
06 авг 2026, 15:06
3266bcd
Код
Авторство
О чём код?
import { resolve } from 'node:path'; /** * Пути поставки, единые для всех модулей. Якорь — __dirname ЭТОГО файла, а не * process.argv[1] или process.cwd(): __dirname не зависит от того, откуда и как запущен * node (двойной клик по .bat, Start-Process с любым рабочим каталогом, npm run start:dev * из другой директории) — только от места, куда лёг сам собранный файл. cwd-подход * ломался бы всякий раз, когда лаунчер стартует процесс не из корня поставки. * * nest build сохраняет структуру src/ 1:1, так что src/common/app-paths.ts всегда * компилируется в <server>/common/app-paths.js — на один уровень глубже корня сервера. * * разработка: backend/dist/common/app-paths.js -> serverRoot = backend/dist * портативная: app/server/common/app-paths.js -> serverRoot = app/server * * Раскладка вокруг serverRoot (см. build-portable.ps1 и nest-cli.json): * serverRoot/prisma/migrations/ — копирует nest-cli (assets в nest-cli.json), даром; * нужны только для проверки дрейфа схемы. * serverRoot/../client/ — вывод `vite build`, кладёт сборочный скрипт. * serverRoot/../prisma/template.db — эталонная база, кладёт сборочный скрипт. */ function serverRoot(): string { return resolve(__dirname, '..'); } /** Собранный фронтенд (vite build). Не «public» — так называется Nest-модуль src/public. */ export function clientDir(): string { return process.env.CLIENT_DIR?.trim() || resolve(serverRoot(), '..', 'client'); } /** Миграции, приехавшие в сборке (для проверки дрейфа схемы) — копия nest-cli, всегда рядом с сервером. */ export function migrationsDir(): string { return resolve(serverRoot(), 'prisma', 'migrations'); } /** Эталонная SQLite-база — шаблон, который копируется в data/ при первом запуске. */ export function templateDbPath(): string { return resolve(serverRoot(), '..', 'prisma', 'template.db'); }