好了,这周我终于着手打这场仗了。看样子那边的帮手都很强劲(包括我们厂长),不过无所谓,相信最终我一定能证明他这样干纯粹是在浪费双方的时间——先是他重写一遍我的代码,然后我又得来重新实现他需要的那些功能。早通知我一声的话,就完全不必这么费劲了。闲话少说,放码过来:
remotes::install_github('rstudio/blogdown')
目前解决了他(以及其他一些用户)对 blogdown 最深恶痛绝的一点,就是在 RStudio 里面不能点击 Knit 按钮。现在敬请随便点,尽管这个操作并没什么意义,因为 blogdown 网站是只要保存文件就自动编译的,根本不需要特别去点一下按钮,写文章的时候只需要 Cttrl + S 保存即可。
第二大问题是 blogdown 经常编译过去已经编过的旧 Rmd 文档。这个特性我已经默认取消了,所以旧日志应该都安全了。
剩下还需要做一些改进,不过鉴于最近 hugo-academic 这个最流行的 Hugo 主题又出了幺蛾子(作者把仓库挪窝、打算挣钱了,更要命的是需要让用户安装 Go 和 GIT 才能用这个主题),我紧急修正了对这个主题的支持,所以打算接下来尽快往 CRAN 更新一下 blogdown,其它的工作就留到再下一个版本再做。
目前这个版本中我非常需要各位壮士帮忙测试的是:
options(blogdown.generator.server = TRUE)
blogdown::serve_site()
因为我把这种服务器方式的实现重写了一遍,以去掉对 processx 包的依赖,我不知道这样会不会有什么我没注意到的问题。尤其是 Windows 用户,请帮忙试试,因为 Windows 下的实现只是大致靠谱,并不能保证 100% 靠谱。如果没什么问题的话,我想把它改成默认的网站预览方式,因为它贼快。
借这栋高楼,也请各位壮士尽情吐槽 blogdown,使用过程中有什么不便或不合理的地方请直说。经历了这次事件,我发现有些用户可能对我太过抬举和客气,以至于有些问题宁愿自己忍着。其实大可不必如此。上面的问题我从一开始就心知肚明,但我没料到会给用户造成这么大的困扰。
又及:在读 hugodown 代码过程中,我发现它用了 59 个硬依赖包(递归后的结果),活生生比 blogdown 的依赖多出 33 个,而多用了 33 个 R 包,还是为了实现 blogdown 的子集,真不知该如何说理。净土宗的依赖问题让我总感觉像是钓龙虾,只要依赖一个,后面就会一个夹一个,依赖出一大坨来。净土宗的敌方还煞有介事建了个 http://www.tinyverse.org 网站(注意是 tiny 而非 tidy)来嘲讽净土宗,虽然我觉得这网站上说的基本上是废话,但有时候还真是只有敌人口中才能说出真话……