rmarkdown::render()の中でJavascriptライブラリが差し込まれるまでの流れ
自分用メモ。
rmarkdown::render()
基本的にはこのソース。中でknitr::knit()
が呼ばれるのでそっちもチェック。
rmarkdown/render.R at master · rstudio/rmarkdown · GitHub
knitr/output.R at master · yihui/knitr · GitHub
knitr::knit()
する前
いろいろメタデータを取ってきている。hookの設定をしてるので、Javascriptのminifyを仕込むならこの辺?と思ったけど、外部JS/CSSファイルはknitrの範疇じゃないのでむりっぽい。
knitrのhookについてはここ参照:
短い例だとこんな感じらしい:
knit_hooks$set(output = function(x, options) paste("<pre>", x, "</pre>", sep = ""))
(出典:other examples for output hooks · Issue #147 · yihui/knitr · GitHub)
knitr::knit()
チェックしようと思ったけどよく分からないので深入りしない。
knitr/output.R at master · yihui/knitr · GitHub
~.knit.md
とwidget用のJSファイルができている。「widget用のJSファイル」というのはRパッケージ用に書いたコードだけで、YAMLに書いたライブラリのファイルはまだ。
pre-processor
output_format
このへんでつくられるやつらしい。
output_format$pandoc$args
これがpandocを実行するときに使われる。こんな感じだった。
Browse[2]> output_format$pandoc$args [1] "--smart" [2] "--email-obfuscation" [3] "none" [4] "--self-contained" [5] "--standalone" [6] "--section-divs" [7] "--template" [8] "/path/to/R/x86_64-pc-linux-gnu-library/3.1/rmarkdown/rmd/h/default.html" [9] "--variable" [10] "theme:bootstrap" [11] "--include-in-header" [12] "/tmp/RtmpbW6iCA/rmarkdown-str5bfa6473a3a1.html" [13] "--mathjax" [14] "--variable" [15] "mathjax-url:https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" [16] "--no-highlight" [17] "--variable" [18] "highlightjs=/path/to/R/x86_64-pc-linux-gnu-library/3.1/rmarkdown/rmd/h/highlight"
--include-in-header
にJSライブラリ、CSSを含むヘッダ部分のHTMLが指定されている。JSライブラリ、CSSをminifyするならこれより前でないといけない。具体的にはどこかというと、
pandoc_html_extras_args
ここより前。