在线发布你的书籍#
一旦你为你的书籍构建了 HTML,你就可以将它托管到线上。 最好的方式是使用托管静态网站的服务(因为这就是你用 Jupyter Book 创建的内容)。 在本教程中,我们将介绍如何使用 GitHub Pages 这个流行的免费在线托管平台来在线发布你的书籍。
为你的书籍创建一个在线仓库#
为了将你托管的书籍与你书籍的源内容连接起来,你应该将书籍的源内容放在一个公共仓库中。本节描述了一种创建你自己的 GitHub 仓库并将你的书籍内容添加到其中的方法。
首先,登录到 GitHub,然后转到“创建新仓库”页面:new
接下来,为你的在线仓库命名并添加描述。将你的仓库设为公开,并且不要初始化 README 文件,然后点击“创建仓库”。
现在,将(当前为空的)在线仓库克隆到你本地计算机上的某个位置。你可以通过命令行执行以下操作:
git clone https://github.com/<my-org>/<my-repository-name>
将你所有的书籍文件和文件夹复制到这个新克隆的仓库中。例如,如果你在本地使用
jupyter-book create mylocalbook创建了你的书籍,而你的新仓库名为myonlinebook,你可以通过命令行执行以下操作:cp -r mylocalbook/* myonlinebook/
现在你需要同步你的本地和远程(即在线)仓库。你可以通过以下命令来完成:
cd myonlinebook git add ./* git commit -m "adding my first book!" git push
使用 GitHub Pages 在线发布你的书籍#
我们刚刚将书籍的源文件推送到了我们的 GitHub 仓库中。 这使得它对你或其他人都公开可见。
接下来,我们将在线上发布我们书籍的构建产物,以便它被渲染为一个网站。
使用 GitHub Pages 最简单的方式是使用 ghp-import 包。ghp-import 是一个轻量级的 Python 包,它使得将 HTML 内容推送到 GitHub 仓库变得容易。
ghp-import 的工作原理是将你构建的书籍的所有内容(即 _build/html 文件夹)复制到一个名为 gh-pages 的分支中,并将其推送到 GitHub。ghp-import 会自动为你创建并填充 gh-pages 分支。要使用 ghp-import 通过 GitHub Pages 在线托管你的书籍,请按照以下步骤操作:
Note
在执行以下步骤之前,确保为你的书籍的每一页都构建了 HTML(参见 上一节)。你的书籍的 _build/html 文件夹中应该有一组 HTML 文件。
安装
ghp-importpip install ghp-import
更新你的 GitHub Pages 站点的设置:
a. 使用
gh-pages分支来托管你的网站。b. 如果你在自己的仓库中构建书籍,选择根目录
/。 如果你用 jupyter-book 构建文档,选择/docs目录。从你的书籍根目录的
main分支(应该包含_build/html文件夹)调用ghp-import并指向你的 HTML 文件,如下所示:ghp-import -n -p -f _build/html
Warning
确保你包含了 -n - 这告诉 GitHub 不要 使用 Jekyll 构建你的书籍,因为我们已经构建了 HTML!如果你不这样做,你可能会看到你的部署内容出现 404 未找到。
通常几分钟后你的站点应该可以在以下网址查看:https://<user>.github.io/<myonlinebook>/。如果没有,请检查你的仓库设置中的 Options -> GitHub Pages,确保 gh-pages 分支被配置为 GitHub Pages 的构建源,或者找到 GitHub 为你构建的网址。
要更新你的在线书籍,请在你的仓库的 main 分支上对你的书籍内容进行更改,使用 jupyter-book build mybookname/ 重新构建你的书籍,然后像之前一样使用 ghp-import -n -p -f mylocalbook/_build/html 将新构建的 HTML 推送到 gh-pages 分支。
Warning
注意来自 ghp-import GitHub 仓库 的这个警告:
“…ghp-import 将会销毁你的 gh-pages 分支…并且假设 gh-pages 分支是 100% 衍生的。如果你使用这个脚本,千万不要在 gh-pages 分支中手动编辑文件…”