本文将梳理Git缓存忽略和quarto resource资源文件的设置方法和应用场景。这个典型的应用场景就是在同一个quarto project中,维护和提交两个类别的子项目:一个是xaringan remarkjs幻灯片子项目(基于Rmarkdown文件的slide-xaringan/),一个是正常的quarto类子项目(其他.qmd文件)。我们希望能正常保持必要的脚本文件和重要资源文件能提交到git仓库,对于那些不需要进行CI/CD管理的渲染生成的结果性资源文件则可以忽略掉而不提交到git仓库。
应用场景分析
在xaringan remarkjs渲染工作流中,Git缓存忽略和Quarto resource机制形成了完美的互补关系。Git负责版本控制管理,确保只有源代码(.Rmd文件)被提交到仓库,避免仓库体积膨胀和版本冲突。Quarto resource负责渲染资源管理,确保所有必要的静态资源在渲染时可用,保证HTML幻灯片的完整性和可移植性。
这种设计模式特别适合团队协作和持续集成环境。团队成员只需要共享Rmd源代码文件,通过Git进行版本控制,而渲染所需的资源文件可以通过Quarto自动处理。在CI/CD流程中,系统可以检出源代码,运行Quarto渲染命令,自动生成包含所有必要资源的完整HTML输出,无需担心资源文件的版本管理问题。
CI/CD维护和提交资料
在上述应用场景中,我们需要向Git仓库提交和维护两类文件:
- 源代码文件:.Rmd文件
- 资源文件:mycss、css、pic文件夹
Git缓存忽略文件设置
Git缓存忽略是通过.gitignore
文件实现的版本控制机制,用于指定哪些文件或文件夹不应被Git跟踪。在xaringan remarkjs渲染场景中,Git缓存忽略的核心目标是保持代码仓库的整洁性,只跟踪源代码文件而忽略所有由渲染过程生成的中间文件和输出文件。
对于xaringan渲染输出,典型的Git忽略规则包括:忽略所有以_files
结尾的子文件夹(如slide-xaringan/*_files/**
),这些文件夹包含渲染过程中生成的临时文件和资源;忽略所有HTML文件(如slide-xaringan/*.html
),因为HTML是渲染的最终输出,应该通过源代码重新生成;忽略libs/
子文件夹(如slide-xaringan/libs/**
),这些文件夹包含从CDN下载的JavaScript和CSS库文件,可以通过网络重新获取。
# .gitignore 示例
slide-xaringan/*_files/**
slide-xaringan/*.html
slide-xaringan/libs/**
如果不小心已经把这些文件夹添加到了Git仓库,可以先远端删除这些文件夹。
git rm -r --cache slide-xaringan/*_files
git rm -r --cache slide-xaringan/*.html
git rm -r --cache slide-xaringan/libs
git add .
git commit -m "remove slide-xaringan/*_files, slide-xaringan/*.html, slide-xaringan/libs"
git push
然后再按前述方法添加git忽略设置后重新提交仓库,这样就避免了这些文件夹被添加到Git仓库。
Quarto Resource资源文件机制
Quarto的resource机制通过YAML前置元数据中的resources
字段定义,用于指定在渲染过程中需要包含的静态资源文件。与Git忽略机制相反,Quarto resource的目标是确保渲染输出能够正常显示,因此需要包含所有支持HTML幻灯片正常运行的资源文件。
在xaringan应用场景中,Quarto resource应该包含:所有_files/
子文件夹,这些文件夹包含渲染生成的图片、CSS、JavaScript等静态资源;所有.html
文件,作为幻灯片的最终输出;libs/
子文件夹,包含必要的JavaScript和CSS库文件;mycss/
和css/
文件夹,包含自定义样式文件;pic/
文件夹,包含图片资源。但必须排除.Rmd
脚本文件,因为Rmd文件是源代码,不应作为静态资源被复制到输出目录。
# .qmd 文件的yaml参数resources 示例
resources:
- slide-xaringan/**
- mycss/**
- css/**
- pic/**
- "!slide-xaringan/*.Rmd"
值得注意的时:.qmd脚本文件中如果使用url链接的方式引用其他资源文件,例如pdf、pptx等,这些资源文件并不需要在Quarto resource中指定,因为Quarto会自动从url链接中获取这些资源文件。
## 第00章 课程说明
- [html版](slide-xaringan/part00-slide-intro.html)(浏览器点击查看)
- [pdf版](slide-format/part00-slide-intro.pdf)(点击下载)
- [pptx版](slide-format/part00-slide-intro-169.pptx)(点击下载)
但是,考虑到这些pdf、pptx等资源文件是额外维护的外部资源,而且这些文件往往比较大,因此不建议把这些资源提交到git仓库。所以,在.gitignore文件中需要忽略这些资源文件。
# .gitignore 设置示例
# 忽略slide-format文件夹,包括所有子文件夹和文件中的资源文件。
# 如pdf、pptx等资源文件。
slide-format/**
然后重新提交仓库。
最佳实践建议
实施Git缓存忽略和Quarto resource配置时,建议采用分层管理策略。在.gitignore
中,使用精确的路径模式(如/slide-chn-part1/slide-xaringan/libs/**
)避免误删其他重要文件,同时使用通配符模式(如*_files/**
)覆盖所有可能的临时文件夹。在Quarto resource配置中,使用相对路径引用资源文件,确保在不同环境下都能正确定位资源,同时使用排除模式(如!slide-xaringan/*.Rmd
)明确排除源代码文件。
定期审查和更新忽略规则和资源配置,确保与项目结构变化保持同步。在项目迁移或重构时,特别注意检查资源文件的路径引用是否正确,避免因路径变更导致的渲染失败。通过合理的配置管理,可以实现高效的xaringan幻灯片开发和部署工作流。