如果我创建一个没有图像或代码的非常基本的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。
答案 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:
您可以在online documentation此处了解有关该软件包的更多信息。
答案 2 :(得分:3)
防止引导程序库不必要地插入HTML文档的序言中的最简单,最直接的方法是添加额外的markdown标志“ theme:null”。
output:
html_document:
theme: null
这比self_contained: false
更可取,因为它不会阻止插入图像或其他需要保留可移植文档的组件。
在我看来,比更改为html_vignette
更可取,因为它不吸收该处理器所施加的其他更改。
请记住,如果文档使用模板,则主题参数将被忽略,并且您需要在theme=NULL
函数中指定rmarkdown::render
。