tctcab 嗯,要支持 Hugo 自带的服务器的话,需要额外的 R 包依赖(processx),而且最早的时候我也没太弄明白这种情况下如何监听、自动重新编译 Rmd 文件,因为 Hugo 自身没法编译 Rmd。后来过了好一阵子我才弄明白 later 包的魔法。前两天我差不多弄明白了如何在 Windows 和 *nix 下分别开启后台进程并获取进程号(以便能在合适的时候把 Hugo 服务器进程杀掉、免得退出 R 之后它还继续跑),这下子连 processx 也不用依赖了,所以下一步我打算开始默认使用 Hugo 自带服务器,这样预览速度会快很多倍。

Rmarkdown/Rmd/md 的划分也是有点无奈,看用户的口味偏向 Hugo 的 Markdown 还是 Pandoc 的 Markdown。前者主要是支持 shortcode,后者的语法更严谨而且功能也更多,并且是 R Markdown 用户日常使用的 Markdown。Hadley 贸然选择了只支持前者,但我不确定把 blogdown 用户限制在 Hugo Markdown(确切说是 goldmark 或 blackfriday)上是否真的是个好主意。认知成本当然是有的,但我感觉这个问题好像不太容易简化。

academic 主题的开发者实在太短视了。要钱的话,我可以很轻易地让我们厂支援他。我非常怀疑他这样单干能挣几个钱,很可能还不如我们厂给他捐赠。现在昏招一出,和用户的关系也搞僵了, 而我们也开始严肃认真地考虑另写一个 Hugo 主题代替它(绝对不能容忍主题还需要依赖 Golang + GIT)。

目前遇到一个非常诡异的问题:https://github.com/rstudio/blogdown/issues/480#issuecomment-704372761

要是有用 Windows 的壮士的话,请再帮我测试一下吧,看看是不是会开启两个 hugo 进程。测试步骤:

重启 R,然后安装开发版本的 blogdown:

remotes::install_github('rstudio/blogdown')

然后新建一个网站项目:https://bookdown.org/yihui/blogdown/rstudio-ide.html#fig:new-project

打开这个项目后,RStudio 应该会自动开启 Hugo 服务器预览。预览出来后,

system('wmic process where "Name=\'hugo.exe\'" get processid, commandline')

看看里面是不是有两个 hugo.exe。

然后关掉 RStudio,再到另一个 RStudio 中跑一遍前一句代码,看看 hugo.exe 还在不在里面。

    yihui 我去年年底开始彻底放弃了Windows,目前随大佬一起啃苹果了

      我用 windows,然而这个学期一开学就太忙,恐怕没精力参加这轮测试了。

      hugo-academic 的这番变动还是挺出人意料的。几年前我开始用它,眼看着它升级了,变样了,现在又怎么怎么样了,然而我的博客仍然是旧版的 academic——已经够好了,不知道折腾个啥。

        dapengde 对,我的建议是选用了一个主题之后,就锁定它,不要再跟着主题的作者去更新了,而且把 Hugo 的版本也锁定住。下下个版本的 blogdown 中我会做这件事。Hugo 的更新和主题的更新这两件事目前可能是 blogdown 用户最大的痛点(不能点击 Knit 按钮的痛点已经解决了)。

          yihui 作为开发者精益求精是一回事,而作为用户,其实我都体会不到这些个所谓痛点的存在。比如不能 knit,这也算痛点?我自己就从来没想过要在 blogdown 里点这个按钮。

          我甚至怀疑有多少人需要在网站和博客上写多少个嵌入代码的 .Rmd 文件。我自己的博客,几乎全部情况下光 .md 文件就够了。blogdown 对我最大的意义是两个:一是建新站可以一键搞定,省去了七步走还是几步走的琐碎;二是把写博客这件事纳入了 R 语言的框架下,因为要是没有 blogdown 我就根本不知道 Hugo,也不会从 WordPress 搬到 Hugo。

          最近两年我感觉手头有些技术过剩。折腾技术花去太多精力,却没有能产生多少内容,这不是舍本逐末嘛。——这是从用户角度而言。开发者另说。

            昨天半夜趁人少放了一个新版本到 CRAN:https://github.com/rstudio/blogdown/releases/tag/v0.21 革命尚未成功,下一个版本还需继续努力。

            dapengde 不同用户的需求太不一样了。你我都是码字型的博客用户,几乎不在网站里放 R Markdown 文件,而 blogdown 用户里有很多跟我们不一样。每当他们用 R Markdown 日志文件时,总是忍不住去点一下 Knit 按钮,而后果总让他们很崩溃,因为那样出来的 .html 文件不是 blogdown 真正需要的。这件事不知道迷惑了多少人。

            chuxinyuan bookdown 不存在这个问题。你可以随便点 Knit 按钮。

              yihui 用户习惯是可以培养的,现在我已经觉得在用 blogdown 的情形下,点 knit 按钮非常不自然---其实压根想不起来要去点。不过有竞品拿这个做文章的情况下,是培养新习惯还是迁就老习惯就成问题了。

                Liechi

                rmarkdown系列的产品都培养起的“写完源文件knit”一下的习惯,blogdown算是同一体系,新用户当然会按其他down系列产品对knit按钮的功能形成合理预期。这是保持与现有体系习惯一致而不是培养新习惯的问题。所以我觉得knit按钮这一点还是挺重要的。

                yihui 以前 bookdown 我都是点的build按钮,试了下点 Knit 按钮貌似效果一样的,这个 build 按钮是不是有点多余了,虽然点击他们的二级菜单有点差异。另外利用 learnr 包制作 Tutorial 的时候,按钮变成了 Run Document。是否考虑统一下,都整合在一个 Knit 按钮里面。

                  好了,现在 Hugo 版本的问题也解决了。默认会把 Hugo 安装在一个带版本号的文件夹下,这样往后就算 Hugo 更新,也不会影响到之前的网站了,而且随时可以自由切换 Hugo 版本(设置 options(blogdown.hugo.version = "版本号") 即可。如果 netlify.toml 文件存在,还会自动检查其中的 Hugo 版本设置和本地的 Hugo 版本是否匹配,这样 Netlify 用户应该再也不用困惑为什么本地和服务器上编出来的版本不一样了。

                  当前 CRAN 上 blogdown 版本是 0.21,下一个会是 0.22,所有变动记录在此:https://github.com/rstudio/blogdown/blob/master/NEWS.md

                  tctcab 之前我感到奇怪的一点就是hugo本身自带本地服务器干嘛不用啊。。可能当时写blogdown的时候还考虑对其他静态网站生成器的兼容? 目前看来专营hugo这一亩三分地比较合理,其他生成器(jekyll)没人会去用吧。

                  想起来 hugo 自带的服务器还有个缺陷,导致它在 RStudio 服务器上不能实时刷新,不知道啥时候能修正:https://github.com/gohugoio/hugo/pull/6698

                  chuxinyuan 在 bookdown 或 blogdown 项目中,点 Knit 按钮只会编一个文件;而点 Build 会编整个项目(所有文件),所以不是多余的。

                  25 天 后

                  刚花了四天时间埋头徒手写了个 Hugo 主题,目标是秒杀目前最受欢迎的两个主题(因为我实在是觉得它们太笨重了)。源码在此,欢迎拍砖:https://github.com/yihui/hugo-prose 现在主要是还有大部分文档没写,以及没有测试 R Markdown,不过四天体重掉了四斤,已经快到我的生理极限,所以先冒个泡、喘口气。hugodown 这口气憋了我小半年,过两年也许我还得感谢它的激励(人不激不奋),尽管当初实在是把我气得要死。

                    yihui 先来赞个,解决了之前很多用academic时的痛点,尤其是浮动目录和全页面宽度的容器

                      yihui 这个更长些,虽然长宽比差不多。上面蔡京和李溥光的题字也是珍品。

                        yihui 加载一会能看到。简单试了一下对 R Markdown 的支持,正常文档流没什么问题,全宽容器似乎还不支持呈现 R 代码生成的图。

                          Liechi 好的,谢谢。这个不是纯图片,估计需要用 iframe 嵌入,回头我再研究一下。

                          qiushi R Markdown 的支持还需要一部分工作,接下来几天应该能弄好。

                          Cloud2016 我做了四个 Hugo 主题之后,越来越觉得目前的网页设计实在是臃肿不堪,五花八门的库和框架,动不动几万行代码,其实三百行代码能解决 99% 的问题,而剩下 1% 的问题需要两万九千七百行代码。我可能是帕累托法则中毒太深了吧。