Files
core/codegen.ts

70 lines
2.3 KiB
TypeScript
Raw Normal View History

import type { CodegenConfig } from '@graphql-codegen/cli'
2025-09-27 13:20:56 +03:00
// 🩵 Динамическая модель выбора источника схемы с антихрупкостью
const getSchemaSource = () => {
// В CI окружении используем локальные файлы для избежания сетевых проблем
if (process.env.CI === 'true') {
console.log('🔧 CI режим: используем локальные файлы схемы')
return ['schema/*.graphql']
}
// В dev режиме предпочитаем удаленную схему для актуальности
console.log('🌐 Dev режим: используем удаленную схему')
return 'https://v3.dscrs.site/graphql'
}
const config: CodegenConfig = {
overwrite: true,
2025-09-27 13:20:56 +03:00
// Адаптивный выбор источника схемы
schema: getSchemaSource(),
documents: ['panel/graphql/queries/**/*.ts', 'panel/**/*.{ts,tsx}', '!panel/graphql/generated/**'],
generates: {
'./panel/graphql/generated/introspection.json': {
plugins: ['introspection'],
config: {
minify: true
}
},
'./panel/graphql/generated/schema.graphql': {
plugins: ['schema-ast'],
config: {
includeDirectives: false
}
},
'./panel/graphql/generated/': {
preset: 'client',
plugins: [],
presetConfig: {
gqlTagName: 'gql',
fragmentMasking: false
},
config: {
scalars: {
DateTime: 'string',
JSON: 'Record<string, any>'
},
// Настройки для правильной работы
skipTypename: false,
useTypeImports: true,
dedupeOperationSuffix: true,
dedupeFragments: true,
// Избегаем конфликтов при объединении
avoidOptionals: false,
enumsAsTypes: false
}
}
},
// Глобальные настройки для правильной работы
config: {
skipTypename: false,
useTypeImports: true,
dedupeOperationSuffix: true,
dedupeFragments: true,
// Настройки для объединения схем
avoidOptionals: false,
enumsAsTypes: false
}
}
export default config