加入我们,于10月8日至10日在纽约市学习关于GraphQL联接和API平台工程的最新技巧、趋势和新闻。加入我们参加2024年纽约市GraphQL峰会
文档
免费开始

在Swift代码中运行代码生成


对于大多数用例, Codegen CLI是生成代码和下载您的模式的推荐方法。CLI使用执行这些操作。ApolloCodegenLib用于执行这些

要启用高级使用,ApolloCodegenLib可以作为您自己的Swift项目的依赖项包含。这使您可以使用Swift脚本执行CLI无法完成的。直接调用ApolloCodegenLib允许您以您想要的方式将Apollo集成到开发过程中。

安装ApolloCodegenLib

ApolloCodegenLib作为Apollo iOS Codegen的SPM包的一部分。

目前,ApolloCodegenLib仅支持macOS。您无法在其他平台上运行代码生成脚本。

要在您自己的Swift项目中使用它,只需将其作为依赖项包含即可。

Package.swift
.target(
name: "MyApp",
dependencies: [
.product(name: "ApolloCodegenLib", package: "apollo-ios-codegen"),
]
)

重要:由于代码生成与Apollo iOS SDK的使用相关联,请确保您使用了相同版本的apollo-iosapollo-ios-codegen包。

使用方法

一旦您在项目中安装了ApolloCodegenLib依赖项,您可以使用它来:

运行代码生成

要使用ApolloCodegenLib配置和运行代码生成,创建一个ApolloCodegenConfiguration,然后将它传递给ApolloCodegen.build(with configuration:withRootURL:itemsToGenerate:)函数。

默认情况下,代码生成引擎会将ApolloCodegenConfiguration中的所有文件路径解析为当前工作目录。可以使用rootURL参数来提供要运行代码生成的项目的根目录的本地文件路径URL。这将在提供的rootURL相对于解析您的配置中的文件路径。

import ApolloCodegenLib
let configuration = ApolloCodegenConfiguration(
schemaNamespace: "MyGraphAPI",
input: ApolloCodegenConfiguration.FileInput(
schemaSearchPaths: ["**/*.graphqls"],
operationSearchPaths: ["**/*.graphql"]
),
output: ApolloCodegenConfiguration.FileOutput(
schemaTypes: ApolloCodegenConfiguration.SchemaTypesFileOutput(
path: "./generated/schema/",
moduleType: .swiftPackageManager
),
operations: .inSchemaModule,
testMocks: .none
),
options: ApolloCodegenConfiguration.OutputOptions(
additionalInflectionRules: [
.pluralization(
singularRegex: "animal",
replacementRegex: "animals"
)
],
queryStringLiteralFormat: .multiline,
deprecatedEnumCases: .include,
schemaDocumentation: .include,
apqs: .disabled,
cocoapodsCompatibleImportStatements: false,
warningsOnDeprecatedUsage: .include,
conversionStrategies: ApolloCodegenConfiguration.ConversionStrategies(
enumCases: .camelCase
),
pruneGeneratedFiles: true
)
)
try! ApolloCodegen.build(with: configuration)

有关配置代码生成的更多信息,请参阅配置文档

下载模式

如果您想从您的Swift项目中下载一个,请使用ApolloSchemaDownloader

模式下载器可以配置为使用 ApolloSchemaDownloadConfiguration.

import ApolloCodegenLib
let configuration = ApolloSchemaDownloadConfiguration(
using: .introspection(endpointURL: endpoint, outputFormat: .SDL),
outputPath: outputURL.path
)
try! ApolloSchemaDownloader.fetch(configuration: configuration)

有关模式获取的更多信息,请参阅 下载模式.

上一页
下载模式
下一页
代码生成故障排除
评分文章评分Edit on GitHubEdit论坛加入Discord服务器

©2024星座图形股份公司,经营业务为Apollo GraphQL。

隐私政策

公司