Установка и настройка KeystoneJS
KeystoneJS 6 требует PostgreSQL или MySQL/SQLite (для разработки) и Node.js 18+. Установка занимает 20–30 минут, но правильная начальная конфигурация экономит часы в будущем.
Инициализация проекта
npm create keystone-app@latest my-project
# Выбираем: PostgreSQL, стартовый шаблон (blog или todo)
cd my-project
npm install
Создаётся структура с keystone.ts, schema.ts и примером List. Сразу меняем SQLite на PostgreSQL:
// keystone.ts
db: {
provider: 'postgresql',
url: process.env.DATABASE_URL || 'postgresql://user:pass@localhost:5432/keystone_dev',
enableLogging: true,
idField: { kind: 'uuid' }, // вместо autoincrement
},
Переменные окружения
# .env
DATABASE_URL=postgresql://keystone:secret@localhost:5432/keystone_dev
SESSION_SECRET=supersecretkey32charsmin
FRONTEND_URL=http://localhost:3001
BASE_URL=http://localhost:3000
Первый запуск и миграции
# Запуск в dev-режиме (auto-migrate)
npx keystone dev
# Первая миграция создаётся автоматически
# В продакшене — явно:
npx keystone prisma migrate deploy
После запуска доступны:
-
Admin UI:
http://localhost:3000— создание первого пользователя -
GraphQL API:
http://localhost:3000/api/graphql - GraphQL Playground: включён только в development
Настройка CORS и server options
server: {
cors: { origin: ['http://localhost:3001'], credentials: true },
port: parseInt(process.env.PORT || '3000'),
maxFileSize: 200 * 1024 * 1024, // 200MB для загрузки файлов
},
TypeScript и tsconfig
KeystoneJS генерирует типы автоматически в .keystone/types.ts. Добавляем в tsconfig.json:
{
"compilerOptions": {
"target": "ES2019",
"module": "CommonJS",
"lib": ["ES2019"],
"strict": true,
"paths": {
".keystone/types": ["./.keystone/types"]
}
}
}
Базовая установка и настройка PostgreSQL-окружения — 2–4 часа, включая создание первых Lists и тестовый деплой.







