测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最新发布 | 2024年6月 |
由 Krzysztof Zabłocki,Anton Domashnev,Ilya Puchka,Liquidsoul,Eric Horacek,Ruslan Alikhamov 维护。
Sourcery 会扫描你的源代码,应用你个人的模板,并为你生成 Swift 代码,让你能够使用元编程技术来节省时间并减少潜在错误。
使用它的好处有很多
Sourcery 非常元,甚至用它来生成样板代码
目录 使用 DocToc 生成
Swift 的运行时代码非常有限,并且没有元编程功能。这使得我们的项目包含了很多样板代码。
Sourcery 存在是为了让 Swift 开发者在停止重复做同样的事情的同时,仍然保持强类型化,避免错误并利用编译器。
你有没有过?
如果你做过这些,你可能会发现自己不得不编写重复的代码来处理这些场景,这感觉对吗?
更糟糕的是,如果你向一个类型添加新属性,所有这些实现都必须更新,否则你将遇到错误。在这些场景中,通常 编译器不会为你生成错误,这会导致代码容易出错的。
二进制形式
从 发布标签 下载最新的预构建二进制文件。解压缩归档到目标位置并运行 bin/sourcery
CocoaPods
将 'Sourcery' Pod 添加到您的 Podfile 并运行 pod update Sourcery
。这将下载最新版本的二进制文件并将其放置到您的项目 CocoaPods 路径中,因此您将使用 $PODS_ROOT/Sourcery/bin/sourcery
来运行它。
从源代码构建
从 发布标签 下载最新版本的源代码,或克隆存储库并手动构建 Sourcery。
使用 Swift Package Manager 构建
在根目录中运行 swift build -c release
。这将创建一个 .build/release
文件夹并将二进制文件放置在那里。将整个 .build/release
文件夹 移动到您想要的目的地,并使用 path_to_release_folder/sourcery
运行。
注意:当使用 SPM 构建时,尚不支持 Swift 和 JS 模板。
使用 Xcode 构建
打开 Sourcery.xcworkspace
并使用 Sourcery-Release
方案构建。这将在 Derived Data 文件夹中创建 Sourcery.app
。您可以将它复制到您想要的目的地,并使用 path_to_sourcery_app/Sourcery.app/Contents/MacOS/Sourcery
运行。
Sourcery 是一个命令行工具,您可以使用以下命令手动运行它或在自定义构建阶段运行它
$ ./sourcery --sources <sources path> --templates <templates path> --output <output path>
注意:此命令可能因 Sourcery 的安装方式而异(请参阅安装)
--sources
- 源 swift 文件的路径。您可以使用多个 --sources
选项提供多个路径。--templates
- 模板的路径。文件或目录。您可以使用多个 --templates
选项提供多个路径。--output
[默认:当前路径] - 输出路径。文件或目录。--config
[默认:当前路径] - 配置文件的路径。目录。请参阅 配置文件。--args
- 传递给模板的额外参数。每个参数可以具有显式值或隐式 true
值。参数应该用逗号分隔,没有空格(即 --args arg1=value,arg2
)。参数可以在模板中通过 argument.name
访问。--watch
[默认:false] - 监视代码和模板文件夹中的更改并自动重新生成。--verbose
[默认:false] - 启用详细日志记录。--quiet
[默认:false] - 关闭任何日志记录,仅发出错误。--disableCache
[默认:false] - 关闭解析数据的缓存。--prune
[默认:false] - 精简空生成的文件。--version
- 显示 Sourcery 的当前版本。--help
- 显示帮助信息。您还可以使用项目根目录中的 .sourcery.yml
文件提供参数,如下所示
sources:
- <sources path>
- <sources path>
templates:
- <templates path>
- <templates path>
output:
<output path>
args:
<name>: <value>
您可以使用 include
和 exclude
键排除一些源或模板。
sources:
include:
- <sources path to include>
- <sources path to include>
exclude:
- <sources path to exclude>
- <sources path to exclude>
templates:
include:
- <templates path to include>
- <templates path to include>
exclude:
- <templates path to exclude>
- <templates path to exclude>
您可以提供源路径或扫描的目标。
project:
file:
<path to xcodeproj file>
root:
<path to project sources root>
target:
name: <target name>
module: <module name> //required if different from target name
您可以使用多个 project
或 target
对象从单个项目或多个项目中扫描多个目标。
注意:配置文件中的路径默认相对于配置文件路径。如果您想指定绝对路径,请以
/
作为开头。
有关更多信息,请参阅 文档。
欢迎大家并为 Sourcery 做贡献!
很容易参与进来。请参阅贡献指南以获取更多详细信息。
为了明确我们对社区的要求,Sourcery 采用了由贡献者公约定义的行为准则。该文件在许多开源社区中使用,我认为它很好地阐述了我的价值观。更多信息请见行为准则。
Sourcery 可在 MIT 许可证下使用。有关更多信息,请参阅LICENSE。
此工具由
感谢!感谢
如果你想要为与资产相关数据(如 .xib、.storyboards 等)生成代码,请使用 SwiftGen。SwiftGen 和 Sourcery 是互补的工具。
请确保查看我的其他库和工具,特别是
您可以在 twitter 上关注我,以了解关于我正在创建的其他项目的新闻/更新。