大多数浏览器和
Developer App 均支持流媒体播放。
-
托管和自动化 DocC 文档
了解如何轻松地在线托管 Swift 文件包和框架 DocC 文档。我们还将带您了解如何配置网页服务器来托管生成的 DocC 存档,并帮助您学习使用 xcodebuild 工具来自动生成文档并保持网页内容同步及最新。
资源
相关视频
WWDC21
-
下载
大家好 我叫大卫 是Apple文档工具团队的一名工程师 本讲座中 您会学习 如何将DocC文档存储到服务器 以及如何自动化文档建立 首先 我会讲解如何 在Xcode里构建文档 以及你如何 将构建好的文档档案 存储到一个服务器上 接下来 我会深入讲解 如何构建一套文档 以及如何自动构建文档
本讲座中 我会向您展示一个叫树懒生成器的项目 是我同事和我一起开发的
我们创建了一个网页帮助人们入门 这里令我们兴奋的是 Xcode中新的文档功能 可以为我们的文档构建出一个 可以存储到网站的版本 这会让新手入门 变得更加简单 我们看看如何完成这些吧
Xcode 13里新的文档功能 使为Swift框架 资源库和包 构建文档 变得非常简单 您可以不需任何设置 就开始使用它 在后面再添加额外的物料 来扩展您的文档
操作非常简单 从开发者文档窗口 导出您的文档就行了
导出的文档档案 可以与别人共享 他人可以导入Xcode并阅读该文档 或将该文档档案存储在线上
若您想了解更多Xcode中 文档功能的详情 以及如何在文档中使用自己的符号 我的同事维多利亚和伊森 在“Xcode中DocC文档入门”讲座中 会为您详细讲解 本节课的第二部分中 我会为您讲解如何在命令行上 自动构建文档 但是眼下 我还是先使用 从Xcode里导出文档档案 来存储在我们服务器上
文档档案本身就像一个容器 它可以容纳所有的数据 兼具在Xcode中读取文档 和在线存储文档的功能
它是按照一个单页面 Vue.js网页App来构建的 它可以用来 渲染您的参考文档和文章 也可以渲染富文本的 交互性教程
要存储文档档案 服务器需要处理 两种不同的请求 一种是对文档和教程页面的请求 其请求的URL开头是 /documentation或/tutorials 另一种是对其他文件和数据的请求 其经由网页App加载 请求的URL会在文档档案中 寻找与相对文件的路径 匹配的某个文件
这里我们看一个例子 这是一条构成一个页面的请求 看看服务器是如何应答的
当一位开发者要读取您存储的文档 浏览器就会请求一个页面 若请求以/documentation 或/tutorials开始 然后服务器就会 以index.html文件应答 该文件位于文档档案中
该文件引用文档档案里的 CSS和JavaScript 浏览器会请求加载网页App余下的部分
当加载完成后 网页App会请求该页面的内容 以及任何它引用的图片或媒体文件
两类文件 不管是index.html引用的文件 还是网页App加载的内容和媒体 使用的请求URL都要匹配 文档档案中的文件夹结构
现在您已了解了 服务器如何应答收到的请求 我们现在去实例中看看 应该有很多人已经拥有 可以存储网页的服务器 本项目中 我们使用Apache服务器 但您可以使用任何 允许自定义路由的服务器
这就是我们树懒生成器的网页 我们已经添加上了“阅读文档”按钮 就在屏幕中央介绍语的下面 但是这个按钮暂时还并不能工作 我们来修复这个问题
我已经将文档档案 复制到了我们存储网页的目录 并添加了一个后缀名 为.htaccess的空白文件 但是我还未设置任何路由
这里我需要添加2条路由规则 一条给文档和教程页面 一条给其他文件和数据
在第一条规则下 我想要匹配的模式是 找到任何开头第一部分是 documentation 或tutorials的URL
任何匹配该模式的请求 都进行重定路由 转给文档档案里的 index.html文件
最后 设立一个旗标(flag) 来结束本条规则 当请求匹配上了本条规则时 就停止评估
第二条规则中 我会更明确地描述待匹配模式 由于我们的网页也存储在服务器上 我们不希望针对网页的请求 被重定路由到 文档档案中的文件上
若我们看一下文档档案内部 可以看到里面有很多 顶层文件和文件夹 我可以根据模式进行匹配 所以现在我将 添加一个匹配全部这些的模式
本例中 请求的URL 是文档档案中 某个文件的相对路径 于是我要把该请求 重定路由到匹配的模式上 但是要用SlothCreator.doccarchive 预修复一下 和之前一样 这里也要添加一个旗标 来终止规则评估
现在 若我重新加载网页 点击文档链接 可以看到我们的网页和文档 就都存储在服务器上了
树懒生成器主页 将重要的符号分组成一个个话题 它们与更高级的任务相关
每个分组的符号下 又细分为更特定的话题
DocC是内建的 且设计简洁 它可以很好地与多种项目相结合 有了它 为您的项目 构建美观且优雅的文档变得非常简单 就像这份树懒生成器文档一样 现在我们网站上已经存储了 一份文档 接下来我们学一下 如何自动构建和更新 文档档案文件 为此我们要编写一份脚本 它会调用codebuild 脚本就绪之后 每当有新的变动时 我就可以运行它 这样一来 存储的文档 就能时刻保持更新了 Xcode 13加入了一项新功能 您可以通过xcodebuild的 新动作docbuild 在命令行上构建文档
当您在Xcode或xcodebuild里 构建文档 它就像一个标准程序 可以构建文档
在构建过程中 Swift编译器收集关于所有公共符号 它们之间的关系 还有源代码内文档注释的详细信息 将这些作为一个名为符号图表的文件 传递给文档编译器 来生成一个文档档案 其中包含 在Xcode中读取文档和在线存储它 所有的必需信息 若目标拥有一个相关的文档编目 含有你的项目所需的 额外的文章 媒体或教程 那么文档编译器 生成文档档案时 将会通过符号信息 来编译全部这些内容
若您想了解 关于文档编目的更多详情 请观看 “在Xcode中改进您的DocC文档” 我的同事碧雅和杰克 会为您讲解不同类型文档 以及如何在其间进行取舍 希望能为开发者提供 了解您项目的最好方式
构建文档不仅仅应用于您的目标 若您的目标的运行 还依赖其他Swift框架 资源库或者包 那么同样的过程也会应用到它们全体 这样一来 您项目所有相关的文档 就汇聚在一处了
由于我想要通过脚本来自动构建和更新 存储在服务器里的文档 那么命令行上的xcodebuild 就是完成此举的绝佳工具
xcodebuild里 新引入的docbuild动作 其工作方式和默认的“构建”动作一样 但是它还能构建文档
就像“构建”动作一样 你要将想要构建的scheme 以及它所属的项目或工作区传送进来
您也可以 从包含您项目 工作区或Swift包的目录里 调用xcodebuild 仅将scheme传递给它 根据您的项目和scheme 您可能会想要传递其他的旗标 例如sdk、目的地或配置 以期对您的项目如何构建进行自定义
这不是必需的 但是可以让人们更轻松地跟上 我会设定一个自定义的 derivedDataPath 它指定了构建出来的产品和文档 会被写在哪里
在构建完成之后 我可以找到所有 以.doccarchive为文件扩展名的 文档档案 全都复制到另一个位置 或另一台机器
我们到实例中看一下
这是之前我们存储在服务器里的文档 它将相关的符号分组成一个个话题 这样便于开发者 针对某特定任务找到核心类型
在我们构建了这个版本之后 我的同事在Essentials小节 添加了一些新的文章和教程 所以现在我就要编写一份自动化脚本 来构建最新版的文档 并升级我们的网站
如您所见 要构建文档 我们要调用xcodebuild的 docbuild动作 更新网站则需要 找到文档档案 并复制到网站所存储的目录里去
我已经知道需要将 什么scheme传送过去 因为在Xcode的Scheme选择器里 可以看到它们是一样的 若我没打开Xcode 则可以在命令行上 运行xcodebuild -list 将所有可用scheme都列出来
同样地 自定义的derivedDataPath 不是必须的 但是它能更方便的追踪 文档在哪里编写和找到
当构建完成后 我可以找到所有的文档档案 一一复制到 我们网站存储的目录里
这些完成后 我就可以运行脚本了
现在若我刷新一下 在Essential小节里 您就可以看到 新添加的文章和教程了
经过最近一次的修改 我们的文档看起来更完整了 新手面对树懒生成器 可以更好地上手起步 无论他们是喜欢文字教程
或是教程中分步指导
现在 更新我们存在服务里的文档 只需简单的运行脚本即可 若我们在持续集成服务器上 将它作为一个 post-merge挂钩来运行 那我们就可以确保 服务器上的文档永远是最新版的
现在总结一下本讲座中的知识点 您可以将文档档案共享 或存储于在线服务器上 以为您框架的使用者 提供优质的文档体验 即使他们没有 在Xcode中打开它 在命令行上构建文档 使您可以将文档 包含到您的自动化工作流程中
若您想学习更多DocC文档的知识 “Xcode下DocC文档入门” 是个不错的入门讲座 它对Xcode中的文档功能 进行了详细讲解
“在Xcode中改进您的DocC文档” 讲座 则更深入的讲解如何通过DocC编目 对文档进行增强 “用DocC构建交互型教程”讲座 详细讲解了如何将您的想法构建出来 为您的项目创建优秀的教程 感谢您的观看 [音乐]
-
-
4:49 - Custom routing in a .htaccess file
# Enable custom routing. RewriteEngine On # Route documentation and tutorial pages. RewriteRule ^(documentation|tutorials)\/.*$ SlothCreator.doccarchive/index.html [L] # Route files within the documentation archive. RewriteRule ^(css|js|data|images|downloads|favicon\.ico|favicon\.svg|img|theme-settings\.json|videos)\/.*$ SlothCreator.doccarchive/$0 [L]
-
9:17 - Build documentation on the command line
# Build documentation for the project. xcodebuild docbuild \ -scheme "SlothCreator" \ -derivedDataPath MyDerivedDataFolder # Find all the built documentation archives # to copy them to another location. find MyDerivedDataFolder \ -name "*.doccarchive"
-
9:18 - Build and update the hosted documentation
#!/bin/sh # Build the SlothCreator documentation. xcodebuild docbuild \ -scheme "SlothCreator" \ -derivedDataPath MyDerivedDataPath # Copy the documentation archive to ~/www where we # host the SlothCreator website and documentation. find MyDerivedDataPath \ -name "*.doccarchive" \ -exec cp -R {} ~/www \;
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。