正在开发一个 TypeScript 项目,其中使用
typescript-mock-data
来生成模拟数据。在我的 codegen.ts
文件中,我在配置中设置了 onlyOperationTypes: true
以仅为操作类型生成模拟数据。
但是,在运行代码生成时,我没有得到预期的行为。看起来 onlyOperationTypes 对于 graphql.ts 文件运行良好,但从模拟文件中删除了所有值。我已验证其他配置选项是否按预期工作。
我检查了
typescript-mock-data
的文档,但找不到有关使用onlyOperationTypes的具体信息。有人在 TypeScript 项目中成功使用 onlyOperationTypes 和 typescript-mock-data 吗?如果是这样,您能否提供有关如何正确配置它的指导?
const config: CodegenConfig = {
overwrite: true,
hooks: {
afterAllFileWrite: ['prettier --write'],
},
generates: {
[TYPES_FILE]: {
schema: graphQLEndpoint,
documents: GRAPHQL_DOCUMENT_LOCATIONS,
plugins: [
{
add: {
content: [autoGeneratedHeader],
},
},
'typescript',
'typescript-operations',
'typescript-react-apollo',
],
config: {
avoidOptionals: {
field: true,
object: true,
defaultValue: true,
},
namingConvention: {
typeNames: 'keep',
enumValues: 'change-case-all#upperCase',
},
exportFragmentSpreadSubTypes: true,
preResolveTypes: true,
// onlyOperationTypes: true,
},
},
[MOCKERS_FILE]: {
schema: graphQLEndpoint,
documents: GRAPHQL_DOCUMENT_LOCATIONS,
plugins: [
{
add: {
content: [autoGeneratedHeader],
},
},
{
'typescript-mock-data': {
typeNames: 'keep',
enumValues: 'change-case-all#upperCase',
terminateCircularRelationships: true,
},
},
],
config: {
withHooks: false,
withComponent: false,
scalars: {
Time: 'string',
},
typesFile: 'src/services/graphql/generated/graphql.ts',
avoidOptionals: {
field: true,
object: true,
defaultValue: true,
},
namingConvention: {
typeNames: 'keep',
enumValues: 'change-case-all#upperCase',
},
defaultScalarType: 'unknown',
preResolveTypes: true,
// onlyOperationTypes: false,
},
},
},
};
我建议您使用 typemocker.tech 基于打字稿类型生成在线模拟数据。