There were missing in making blog site by using blogdown
当前的几大爱好,计算机、人像摄影、阅读、和运动。缺了哪一个都不行。
引言
今天在用 blogdown 结合 GitHub Pages 搭建博客的过程真是踩坑无数:
安装 blogdown
当时我是在 RStudio 的控制台中输入
install.packages(blogdown)
但是一直装不上。
- 先是早上因为依赖
promises
装不上。 blogdown 装不上,通过 Arch Linux 的 yay 解决了。
yay -S r-promises
- 然后是 RStudio 不能走代理,与 blogdown 库地址的连接时不时断线。最后在多次尝试之后,安装上了。
现在回过头看,有另外两种办法可以避免这一问题。
# 一是通过 AUR 安装 R 扩展包的方式来安装,其有更好的依赖管理,并且如果设置了镜像的话,就可以避免代理的问题。
yay -S r-blogdown
# 如果终端可以正常走代理的话,可以通过下面这种方式
# 在命令行 R 中进行安装。这样可以避免 RStudio 的代理设置问题。
install.packages(blogdown)
安装 hugo
采用 AUR 安装扩展包的方式的同学会发现,这一步可以跳过了。因为 AUR 安装依赖时,已经安装好 Hugo 了。
采用 R 或 RStudio 安装的同学需要跟着进行操作,安装 Hugo。
blogdown::install_hugo()
这个安装会连接到 yihui 的网站,但是因为 RStudio 连接外网不稳定的原因。国内的同学可能需要通过下面两种方式。
# 方式一
# 在可以走代理的命令行 R 中进行安装
blogdown::install_hugo()
第二种方式引自统计之都的文章
# 方式二
# 从各种安全途径(比如 github 中),下载压缩包。解压后,然后本地安装。
blogdown:::install_hugo_bin("解压后目录的绝对路径")
- 刚解决,立马又遇到因为 Rstudio 不能走部分代理,
blogdown::install_hugo
装不了 Hugo。yay
安装的版本又不匹配。不信邪地死磕 Rstudio 的代理了。结果发现设置成全局代理可行又相对简单。上次死磕 Rstudio 是昨天的 fcitx5 不能在里面输入中文,死磕好久,最后认怂改用 ibus 。当然,这里即使改成全局代理也不好用,还是认怂,采用了本地安装的方式。
选择主题
然后进入了耗时三小时的选主题环节。因为被afra 博客上的 chic 主题的简洁美丽惊艳到了。但这个 hexo 主题没有 Hugo 移植。导致我一边在“转攻使用 hexo 直接用 chic” 还是 “ 采用 blogdown (其默认以Hugo为核心)找个相似主题”中进行抉择。当时我是知道 blogdown 可以用 hexo 做引擎,但是稀缺的认知资源已经不能支撑我才去学习怎么使用 hexo 驱动 blogdown 了。显然,我选择了第二种,花了三个小时选出来两个主题。
构建本地网站
建造新网站
然后正式的安装。
将要存储网站资源的文件夹设置为工作路径。
执行 blogdown::new_site
,在当前路径中建立新网站,参数是选用的 “作者/主题库名称” 。此时 Rstudio 的代理不稳定问题又炸了。因为这个函数的机制是把 GitHub 上的主题下下来,然后转换成 blogdown 可以用的材料。所以,这个过程又慢又容易报错。试了好多次才凑巧成功。 rstudio 的代理问题一日不解决,一日就是个雷啊。
blogdown::new_site(theme = "主题名字,可以忽略,使用默认主题")
如果因为网络问题装不上,就多试几次。或者在可以走代理的 R 终端中输入上面的命令。
生成本地预览
根据主题生成好网站后,执行 blogdown::server_site
。少有的很顺畅。成功在本地预览博客。其实这里也是个坑,后面再说。
blogdown::server_site()
部署到网上
此时差不多三四五六点左右了,脑袋有点糊,记不清了。开始最后一步了,部署网站到网上。在这里我没有采用 yihui 大神推荐的 httfy,而是部署到到 GitHub Pages 上。主要是是数据已经托管到 GitHub 里了,不想再引入第三方服务了。
最大的经验就是
网上经验贴可以参考。但操作一定要一步一步跟着官方文档走。
先是按照 jekyll 的经验把文件夹里的所有文件都上传了。结果没有成功。
结合经验贴,发现 GitHub Pages 是根据仓库里的文件层级和 Html 文件生成网站的。在 Hugo 方式中,应该只上传 public/ 。但我的是只有一个 post 文件夹。带着怀疑 push 了,当然没成功。
在 blogdown 的官方文档中发现原来是,因为少看了一句 blogdown::build_site
。
# 生成网站文件
blogdown::build_site()
成功了解到远程库和本地文件夹可以不同名
后话
在Felix的文章中看到采用子模块的方式,上传网站构建资源。觉得不错,有兴趣的可以去看看。
如果是个人博客使用的话,资源库就是个备份同步的作用,它的 push 没那么重要,可以一天/周或者要换设备工作了,再 push。而博客库 push 完才能网站上更新,所以发帖就要 push。
- rstudio 的踩坑记:配置输入法、连接git/GitHub、网路代理、project 的使用。
- GitHub 的使用潜力:工作台,多端同步,多人协作。
- issues 做 日记
可以想象吗,这是用 GitHub 的 Andriod app 写的日记。它议题
的 markdown 功能的舒适程度简直吊打一众 markdown 写作 app。私有库的议题板块用来存写日记相当棒。
参考文献
[2] 用 R 语言的 blogdown+hugo+netlify+github 建博客
[3] 用 blogdown 搭建一个静态网站兼吐槽学术出版传统