A note from the authors: Some of the information and instructions in this book are now out of date because of changes to Hugo and the blogdown package. If you have suggestions for improving this book, please file an issue in our GitHub repository. Thanks for your patience while we work to update the book, and please stay tuned for the revised version!

In the meantime, you can find an introduction to the changes and new features in the v1.0 release blog post and this "Up & running with blogdown in 2021" blog post.

— Yihui, Amber, & Alison

1.3 A quick deploy

发布 blogdown 网站涉及将包含所有渲染的网站文件(通常是一堆 *.html 文件和网站资源,如 fonts、CSS、JavaScript 和 images)的输出目录复制到 Web 服务器或 Web 托管服务。

在本部分中,我们将引导您完成快速部署,以使用 https://www.netlify.com 中的拖放工具发布您的网站。Netlify 是一个为静态网站提供云托管和无服务器后端服务的平台。对我们来说幸运的是,这正是我们所需要的—因为 blogdown 帮助我们使用 Hugo 创建静态网站。

如果您按照 Section 1.2 进行操作,您现在应该拥有一个使用 Hugo lithium 主题的静态网站,其中包含一篇 post 的 knitted .Rmd 内容,并使用 blogdown 在本地提供服务。

如果您不熟悉 GIT 或 GitHub 或部署网站,我们接下来描述的拖放方法是一个很好的工作流程。发布静态网站有很多选项,我们将在 Chapter 3 中详细讨论它们以及涉及版本控制和持续部署的高级工作流程。

1.3.1 Build site

Hugo 网站的发布目录默认为 public/。您构建的网站将生成到此目录,您可以将其上传到任何可以提供静态网站服务的网络服务器,您的网站将启动并运行。

使用 blogdown::serve_site() 在本地为您的 Hugo 站点提供服务不会生成 public/ 目录。要遵循这种拖放方法,您需要首先在本地构建站点。

重新启动 R 会话,然后运行:

blogdown::build_site()

或者,如果您使用 RStudio,您可以使用:

  • Build 窗格中的 “Build Website” 按钮,或者

  • Ctrl + Shift + B (Cmd + Shift + B on macOS) 构建网站。

您应该在项目的根目录下看到一个新的 public/ 目录。切勿编辑此目录中的文件,因为每当您重新构建站点时,您的更改都将被覆盖。

请注意,此功能默认情况下不会 re-knit R Markdown 文件,因为渲染之前 knitted 过的 .Rmd 文件可能会很昂贵并且通常不受欢迎。鉴于 R 包升级有破坏旧代码的趋势,连续 re-knitting 旧内容几乎不可能不出错,尤其是在较长的时间内。

我们建议在构建网站之前始终先使用 blogdown::serve_site() 来预览您的网站。默认情况下,该函数将 knit 尚未 knitted 的 R Markdown 内容。如前所述,我们还建议运行 blogdown::check_content()。除此之外,我们还会检查您是否有需要 re-knit 的内容:

| Checking your R Markdown content...
○ All R Markdown files have been knitted.
○ All R Markdown output files are up to date with their source files.

1.3.2 Use Netlify Drop

接下来,在线访问 Netlify Drop:https://app.netlify.com/drop。 您可以将 public/ 文件夹从文件查看器拖放到 Netlify 网页上的指定区域,其中显示“将站点输出文件夹拖放到此处”。

等待几秒钟,让 Netlify 部署文件,它会为您分配一个形式为 random-word-12345.netlify.app 的随机子域。您的网站上线后,如果您愿意,您将能够共享新 blogdown 网站的链接。

您会注意到一条免责声明,表明该网站将在 24 小时后删除。您需要创建一个帐户来保存此链接并使您的网站保持在线。

1.3.3 Sign up for Netlify

Netlify 有一个免费计划,其中包含许多有用的功能,因此我们建议您注册一个帐户。注册:

  1. 在线访问 https://www.netlify.com.

  2. 单击 “Sign Up” 按钮。

  3. 如果您有 GitHub 帐户(https://github.com),我们建议使用您现有的 GitHub 帐户进行注册(无需创建其他帐户),因此选择“GitHub”(您可能需要登录),然后单击 “Authorize Netlify”。

  4. 在您的帐户中,如果您使用 Netlify Drop,您可以(并且应该)将您的随机子域更改为更有意义的子域。您可以在此处阅读有关更改站点默认 Netlify 子域的文档:https://docs.netlify.com/domains-https/custom-domains/#assign-a-domain-to-a-site

  5. 此外,您还可以通过您的帐户在本地进行更改来更新现有网站,必要时 reknit,然后使用 blogdown::build_site() 重建您的网站。在 Netlify 的 “Deploys” 选项卡中,向下滚动到看到 “Need to update your site? Drag and drop your site output folder here.” 将更新后的 public/ 文件夹拖放到此处以更新已部署的网站。

1.3.4 What is next?

您在网站上工作的次数越多,上述工作流程可能会变得很麻烦。如果您熟悉 GIT 和 GitHub,发布网站会容易得多。

我们建议您从 GitHub 存储库在 Netlify 上创建一个新站点,其中包含您网站的源文件,这样您就可以享受持续部署的好处,而不是每次都手动上传 public/ 文件夹。

借助这种高级工作流程,您无需在本地运行 blogdown::hugo_build(),因为可以通过 Hugo 在 Netlify 上构建网站。相反,您可以在将更改推送到 GitHub 之前在本地依赖 blogdown::serve_site() 预览您的网站。请参阅 Chapter 3 了解更多信息。