个人博客的内容是放在github上,用vercel部署的。
现在是北京时间2021年5月3日 凌晨两点,几十分钟前我写完了一篇博客,传到github上的文件日期写的是5.3日,但见了鬼了邮件都通知我成功部署了,页面内容上却没更新。
我躺被窝想了一会,有没有可能是刚好刚才美国时间还是5.2日,所以那篇博客显示不出来呢?于是我把文件日期改成5.2日重新传,就能正常显示了。
blogdown 部署后帖子未出现在网站
果然有人也碰到相同问题了,前几个月在这个诡异的问题上整整浪费了我一个晚上的时间……
InfinityLoop 我发现你好像已经几次因为某个问题浪费一晚上时间了,而且这些问题都是 blogdown::check_site()
可以很快帮你指出来的,所以下次记住这个口号:https://bookdown.org/yihui/blogdown/a-quick-example.html#when-in-doubt-run-blogdowncheck_site
blogdown::check_site()
会查找日期在未来的文章:https://github.com/rstudio/blogdown/blob/20a8258b39f5cbda7911cc8c0cdb35a4bb31aa52/R/check.R#L339-L352 不过在这个具体问题上,因为日期不带时区,所以 check_site()
也无法聪明到可以预知服务器上的时区,也检测不出来这种问题。
我得想想怎么解决。你们平时怎样创建新的文章?如果用 RStudio 插件 New Post 的话,那还有希望在日期字段里自动加上时区;如果是手打日期的话,那这问题就几乎无望了。
谢谢! blogdown 可用选项太多了,帮助文档也非常丰富,估计有不少和我一样不看帮助文档直接开用,碰到问题才一个一个去查的人,所以对很多操作或者 trick 没有了解得非常透彻,就会导致一直在浪费时间。
我创建文章都是习惯手动复制老文章的设定来写的,因为有不少主题的自定义字段,所以复制粘贴对于我来说更便捷。
yihui 我和 @InfinityLoop 一样,常常是复制修改旧文章
InfinityLoop Cloud2016 你们知道 archetype 模板吗?https://gohugo.io/content-management/archetypes/ 你们这种情况应该添加一个文章模板,在模板里加上自定义字段,这样创建新文章时,这些字段就自动加进来了。复制旧文章还得走删内容这额外的一步。
- 已编辑
yihui 多谢分享,简化模板之后果然不用每次新建文章都删删删了。但有个问题,没填写的内容被包含进去了。
我的模板是这样的:
---
title: "{{ replace .TranslationBaseName "-" " " | title }}"
date: {{ .Date }}
tags: []
---
<!--more-->
用 New Post 新建文章,什么都不填,直接点确定,会产生:
---
title: ''
author: ''
date: '2021-05-17'
slug: .zh-cn
categories: []
tags: []
---
<!--more-->
author、categories 都没填,但是还是出现在文章里了。要是不要包含进去就更好了,我觉得填了再包含会方便点。
yuanfan 刚在 blogdown 里加了个时间选项。若你在 .Rprofile
中设置 options(blogdown.time = TRUE)
,那么用 RStudio 插件 New Post 创建日志时,日期字段里就会自动带上时间,形如 2001-02-03T04:05:06-0700
。因为这里面带上了时区,所以日期就没有了模糊性;无论服务器上的时间在哪个时区,都可以准确解析这个日期。
当然,你也可以手动在日期中添加上时间,北京时间的时区是 +0800
。
最简单的办法还是我最早说的,在 hugo 命令行里添加 -F
选项,命令 hugo 编译任何日期的日志,不管它是不是未来的日期。
- 已编辑
InfinityLoop 我也试花了两个晚上折腾,后来才发现是因为日期是未来日期,所以 hugo 默认不编译。 后来在 netlify.toml 里加上下面的一行就好了
[context.production]
command = "hugo --buildFuture"
前些天也踩了这个坑,发现 Hugo 本来就可以配置编译参数。在 Hugo 配置文件 config.toml
加上 buildFuture = true
就行了。
这样可以把时区设置为东八区(toml):
timeZone = "Etc/GMT-8"