减少R Markdown HTML输出的文件大小

时间:2016-12-20 08:19:06

标签: r knitr r-markdown

如果我创建一个没有图像或代码的非常基本的R Markdown文件并编织此HTML,我最终得到的输出文件大小超过700kb。有没有办法减少HTML文件的大小?

最小示例:

---
title: "Hello world!"
output:
html_document: default
html_notebook: default
---

Nothing else to say, really.

html_document的输出文件大小为708.6 kb,而html_notebook的输出文件大小为765.7 kb。

3 个答案:

答案 0 :(得分:8)

大文件大小的原因是knit默认创建自包含文件,因此包含javascript依赖项(bootstrap,highlight,jquery,navigation)作为base64编码的字符串。请参阅:http://rmarkdown.rstudio.com/html_document_format.html#document_dependencies

在您的简单情况下,不需要javascript功能,因此您可以执行以下操作:

---
title: "Hello world!"
output:
  html_document:
    self_contained: false
    lib_dir: libs
---

Nothing else to say, really.

这将创建一个大小为~2.7kB的html文件和一个带有javascript文件的单独的libs文件夹。但是libs文件夹的大小接近4MB。虽然你不一定需要javascript库,但是html文件仍然试图加载它们。

如果您对真正的最小版本感兴趣,可以查看html_fragment输出选项(http://rmarkdown.rstudio.com/html_fragment_format.html):

---
title: "Hello world!"
output:
  html_fragment: default
---

Nothing else to say, really.

但是,这不会创建一个完整的html页面,而是可以包含在另一个网站中的html内容。 test.html文件只有36个字节。仍然可以在浏览器中显示它。

作为最后的手段,您可以为pandoc创建自定义html模板: http://rmarkdown.rstudio.com/html_document_format.html#custom_templates

答案 1 :(得分:3)

如果您想要较小的文件大小,则html_vignette格式是完美的选择。如功能文档中所述:

  

HTML小插图是html_document的轻量级替代,适合包含在要发布到CRAN的软件包中。它将基本小插图的大小从100k减小到大约1k。

例如:

---
title: "Hello world!"
output: rmarkdown::html_vignette
---

Nothing else to say, really.

结果为6kB:

enter image description here

  

您可以在online documentation此处了解有关该软件包的更多信息。

答案 2 :(得分:3)

防止引导程序库不必要地插入HTML文档的序言中的最简单,最直接的方法是添加额外的markdown标志“ theme:null”。

output:
  html_document:
     theme: null

这比self_contained: false更可取,因为它不会阻止插入图像或其他需要保留可移植文档的组件。

在我看来,比更改为html_vignette更可取,因为它不吸收该处理器所施加的其他更改。

请记住,如果文档使用模板,则主题参数将被忽略,并且您需要在theme=NULL函数中指定rmarkdown::render