ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

DevDocs 如何为 R 语言文档编译并获取本地 HTML 源文件?

DevDocs 如何为 R 语言文档编译并获取本地 HTML 源文件? DevDocs 如何为 R 语言文档编译并获取本地 HTML 源文件【免费下载链接】devdocsAPI Documentation Browser项目地址: https://gitcode.com/GitHub_Trending/de/devdocsDevDocs 里的 R 文档和大多数文档不一样它的 scraperDocs::R继承自FileScraper不从网上抓取而是直接读取仓库本地目录docs/r里的文件。如果这个目录不存在scraping 会直接抛出SetupError。所以要在本地生成 R 文档必须先自己编译 R 源码、生成静态 HTML 页面再把这些文件放进docs/r。docs/file-scrapers.md 的 “R” 一节给出了完整的构建脚本本文按这条路径走一遍安装编译依赖 → 编译 R 静态 HTML → 拷贝进docs/r→ 用 scraper 命令验证结果。先确认 scraper 从哪里读文件R scraper 的定义在 lib/docs/scrapers/r.rbclass R FileScraper self.name R self.slug r self.type simple self.release 4.4.2 self.root_path doc/html/packages.html html_filters.push r/entries, r/clean_htmlFileScraper的读取规则见 lib/docs/core/scrapers/file_scraper.rb源文件目录是仓库根下的docs拼接 scraper 的 path也就是docs/r。当该目录缺失时scraper 会先尝试download_source自动下载——Docs::R没有覆写这个方法基类默认返回false——于是直接报错The R scraper requires the original documentation files to be stored in the docs/r directory.这确认了两件事目标目录就是docs/r而且docs/r/doc/html/packages.html即root_path必须是构建产物的一部分它是抓取入口。另外两个过滤器决定了最终页面形态构建时可以对照理解lib/docs/filters/r/entries.rb 从各包的00Index.html生成条目元数据lib/docs/filters/r/clean_html.rb 负责去掉每页的 “R Documentation” 表格、页脚等结构。准备条件一套使用dnf的 Linux 发行版且有 root 权限脚本里的依赖安装命令是sudo dnf install需要执行系统包安装。R 编译所需的五个依赖包脚本原文bzip2-devel、gcc-gfortran、libcurl-devel、texinfo、xz-devel。DevDocs 本身可运行README 要求 Ruby 4.0.6、libcurl以及 ExecJS 支持的 JavaScript 运行时然后执行gem install bundler和bundle install。以下构建脚本需要在DevDocs 仓库根目录执行因为DEVDOCSROOTdocs/r是相对路径。编译 R 静态 HTML 并放入 docs/rdocs/file-scrapers.md 给出的完整脚本如下可直接照抄sudo dnf install bzip2-devel sudo dnf install gcc-gfortran sudo dnf install libcurl-devel sudo dnf install texinfo sudo dnf install xz-devel DEVDOCSROOTdocs/r RLATESThttps://cran.r-project.org/src/base/R-latest.tar.gz # or /R-${VERSION::1}/R-$VERSION.tar.gz RSOURCEDIR${TMPDIR:-/tmp}/R/latest RBUILDDIR${TMPDIR:-/tmp}/R/build mkdir -p $RSOURCEDIR $RBUILDDIR $DEVDOCSROOT # Download, configure, and build with static HTML pages curl $RLATEST | tar -C $RSOURCEDIR -xzf - --strip-components1 (cd $RBUILDDIR $RSOURCEDIR/configure --enable-prebuilt-html --with-recommended-packages --disable-byte-compiled-packages --disable-shared --disable-java --with-readlineno --with-xno) make _R_HELP_LINKS_TO_TOPICS_FALSE -C $RBUILDDIR # Export all html documentation built − global, and per-package cp -r $RBUILDDIR/doc $DEVDOCSROOT/ ls -d $RBUILDDIR/library/*/html | while read orig; do dest$DEVDOCSROOT${orig#$RBUILDDIR} mkdir -p $dest cp -r $orig/* $dest/ done执行前需要了解的变量和参数DEVDOCSROOTdocs/r产物最终落点必须与上一节说的 scraper 源目录一致。脚本里的mkdir -p会自动创建它。RLATEST默认下载R-latest.tar.gz。要构建指定版本时按脚本注释改用R-${VERSION::1}/R-$VERSION.tar.gz路径形式——$VERSION是完整版本号${VERSION::1}取其第一个字符作为 CRAN 上的目录名例如4。RSOURCEDIR/RBUILDDIR源码目录与构建目录默认在$TMPDIR下未设置时退回/tmp。整个过程只做 out-of-source 构建脚本里没有make install编译结果留在构建目录中不会向系统安装 R。configure的--enable-prebuilt-html是产出静态 HTML 的关键脚本注释即 “build with static HTML pages”--with-recommended-packages、--disable-byte-compiled-packages、--disable-shared、--disable-java、--with-readlineno、--with-xno均保留脚本原样文档未逐一解释其含义。最后两段拷贝是“全局 每包”两级导出$RBUILDDIR/doc整体拷入docs/r/doc/再把每个包的$RBUILDDIR/library/*/html按相同相对路径拷进docs/r/library/包名/html/。构建完成后docs/r下应当具备 scraper 所需的两类文件入口docs/r/doc/html/packages.html以及docs/r/library/包名/html/下的各包页面。用 scraper 命令验证源文件源文件就位后按 docs/adding-docs.md 的流程逐项验证thor docs:list确认r出现在文档列表中多版本 Ruby 环境下命令需通过bundle exec执行。单页验证thor docs:page r [path]。对FileScraper来说[path]是本地路径且必须从/开头否则命令会直接提示ERROR: [path] must be an absolute path.。成功时输出Done生成的页面出现在public/docs/r/目录失败时输出Failed!并建议加--debug查看细节。全量生成thor docs:generate r --force。成功输出Done--verbose可看哪些文件被创建/更新/删除--debug可看被请求和加入队列的 URL便于定位是哪页把不该抓的链接带进了队列。FileScraper直接读本地文件、没有响应缓存这一步只依赖docs/r的内容是否完整。启动应用确认页面渲染bundle exec rackup后把浏览器指向localhost:9292首次请求会花几秒编译资源在应用里启用 R 文档并浏览页面。最后用thor updates:check r确认显示的 latest version 正确——Docs::R#get_latest_version通过解析 CRAN 的 NEWS 页面CHANGES IN R x.y.z:行得到该值。如果某一步报错先回到第 2 步用--debug复现单页失败再检查docs/r里对应路径的文件是否存在、是否为空——FileScraper对每个文件的处理条件是“存在且非空”空文件会被视为无法处理。已知限制scraper 声明的release目前是4.4.2见 lib/docs/scrapers/r.rb。脚本默认构建R-latest二者版本号不一致这一点文档未说明影响若你锁定特定版本构建注意对照release声明自行判断。scraper 明确跳过的文件/DESCRIPTION、/NEWS含变体、/doc/index.html、/demo、*.pdf以及doc/html下的packages-head-utf8.html、Search.html、SearchOn.html、UserManuals.html、faq.html和doc/manual下的R-FAQ、R-admin、R-exts、R-ints、R-lang。构建产物里这些文件会被忽略属预期行为。R scraper 的type是simple页面样式复用assets/stylesheets/pages/_simple.scss的通用规则不需要单独的页面 SCSS 文件。thor docs:clean会删除文档包和缓存响应但它不影响docs/r下的源文件docs/r只有在你重新执行构建脚本前一直是有效来源。【免费下载链接】devdocsAPI Documentation Browser项目地址: https://gitcode.com/GitHub_Trending/de/devdocs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表