Skip to main content

pkgdown-website

Build and deploy professional package documentation websites using pkgdown with Bootstrap 5, GitHub Pages, and automated workflows

Zur Installation springen

Quellinformationen

Repository
choxos/RPkgAgent
Letzte Quellaktivität
15. Februar 2026 um 21:57
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
pkgdown-website
description
Build and deploy professional package documentation websites using pkgdown with Bootstrap 5, GitHub Pages, and automated workflows
# pkgdown Website Development This skill covers creating comprehensive, professional package documentation websites using pkgdown with Bootstrap 5 theming, GitHub Pages deployment, and automated CI/CD workflows. ## Rules 1. **Always use Bootstrap 5** with modern theming capabilities including dark mode 2. **URLs must match** across DESCRIPTION, _pkgdown.yml, and GitHub Pages settings 3. **Use GitHub Actions** for automated deployment (don't build locally and commit) 4. **Organize documentation** with clear reference sections and article groupings 5. **Enable dark mode** using light-switch theme for better user experience 6. **Include social links** in navbar for package promotion and author contact 7. **Math rendering** should use KaTeX for fast, client-side rendering 8. **Custom fonts** via Google Fonts improve branding and readability 9. **Development mode** should be set to auto for version-appropriate messaging 10. **Test locally** with `pkgdown::build_site()` before deploying ## Complete _pkgdown.yml Configuration ### Full Template with All Features ```yaml url: https://username.github.io/packagename/ template: bootstrap: 5 theme: arrow-light bslib: base_font: {google: "Atkinson Hyperlegible"} heading_font: {google: "Fraunces"} code_font: {google: "JetBrains Mono"} bg: "#ffffff" fg: "#1e1e1e" primary: "#0054AD" secondary: "#767676" light-switch: true math-rendering: katex development: mode: auto version_label: danger version_tooltip: "Development version" home: title: "packagename: An Amazing R Package" description: > A comprehensive toolkit for doing amazing things in R. This package provides intuitive functions and robust workflows. links: - text: Ask a question href: https://github.com/username/packagename/discussions - text: Report a bug href: https://github.com/username/packagename/issues authors: Your Name: href: https://yourwebsite.com Another Author: href: https://github.com/anotherusername navbar: structure: left: [home, intro, reference, articles, news] right: [search, github, linkedin, twitter] components: home: icon: fas fa-home fa-lg href: index.html aria-label: Home intro: text: Get started href: articles/packagename.html reference: text: Reference href: reference/index.html articles: text: Articles menu: - text: "Getting Started" href: articles/packagename.html - text: "Advanced Usage" href: articles/advanced-usage.html - text: "Examples" href: articles/examples.html - text: ------- - text: "All Articles" href: articles/index.html news: text: News href: news/index.html github: icon: fab fa-github fa-lg href: https://github.com/username/packagename aria-label: GitHub linkedin: icon: fab fa-linkedin fa-lg href: https://www.linkedin.com/in/yourprofile/ aria-label: LinkedIn twitter: icon: fab fa-twitter fa-lg href: https://twitter.com/yourhandle aria-label: Twitter reference: - title: "Data Import and Export" desc: > Functions for reading and writing data files in various formats. contents: - read_data - write_data - import_csv - export_excel - title: "Data Manipulation" desc: > Core functions for transforming and cleaning data. contents: - clean_data - transform_variables - filter_rows - select_columns - title: "Statistical Analysis" desc: > Functions for statistical modeling and hypothesis testing. contents: - fit_model - test_hypothesis - calculate_statistics - generate_report - title: "Visualization" desc: > Create publication-quality plots and charts. contents: - plot_distribution - create_scatter - visualize_trends - export_plot - title: "Utilities" desc: > Helper functions and package configuration. contents: - validate_input - check_dependencies - packagename_options - print.packagename_object - title: "Internal Functions" desc: > Internal functions not intended for direct use. contents: - has_keyword("internal") articles: - title: "Tutorials" navbar: Tutorials contents: - packagename - getting-started - basic-workflow - title: "Advanced Topics" navbar: Advanced contents: - advanced-usage - performance-optimization - extending-packagename - title: "Case Studies" navbar: ~ contents: - case-study-1 - case-study-2 - real-world-examples footer: structure: left: developed_by right: built_with components: developed_by: "Developed by [Your Name](https://yourwebsite.com)" built_with: "Built with [pkgdown](https://pkgdown.r-lib.org/) and [Bootstrap 5](https://getbootstrap.com/)" ``` ### Minimal _pkgdown.yml Template ```yaml url: https://username.github.io/packagename/ template: bootstrap: 5 light-switch: true development: mode: auto ``` ## DESCRIPTION File URL Configuration The URL field in DESCRIPTION must match _pkgdown.yml: ``` Package: packagename Title: An Amazing R Package Version: 0.1.0 URL: https://username.github.io/packagename/, https://github.com/username/packagename BugReports: https://github.com/username/packagename/issues ``` **Note**: Multiple URLs are comma-separated. Package website comes first, then GitHub repo. ## Initial Setup with usethis ### Complete Setup Process ```r # 1. Initialize pkgdown structure usethis::use_pkgdown() # 2. Configure for GitHub Pages (recommended) usethis::use_pkgdown_github_pages() # This function: # - Adds URL to DESCRIPTION # - Creates _pkgdown.yml # - Adds GitHub Actions workflow # - Configures .gitignore for docs/ # - Sets up gh-pages branch ``` ### Manual Setup (if needed) ```r # Create basic structure usethis::use_pkgdown() # Build site locally pkgdown::build_site() # Preview in browser pkgdown::preview_site() # Build specific components pkgdown::build_reference() pkgdown::build_articles() pkgdown::build_home() pkgdown::build_news() ``` ## GitHub Actions Workflow ### Complete pkgdown.yaml Workflow Create `.github/workflows/pkgdown.yaml`: ```yaml # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: branches: [main, master] pull_request: branches: [main, master] release: types: [published] workflow_dispatch: name: pkgdown # Only allow one deployment at a time concurrency: group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} permissions: contents: write jobs: pkgdown: runs-on: ubuntu-latest # Only restrict concurrency for non-PR jobs env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Pandoc uses: r-lib/actions/setup-pandoc@v2 - name: Setup R uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true - name: Install dependencies uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::pkgdown, local::. needs: website - name: Build site run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) shell: Rscript {0} - name: Deploy to GitHub Pages if: github.event_name != 'pull_request' uses: JamesIves/github-pages-deploy-action@v4 with: folder: docs branch: gh-pages clean: true ``` ### Alternative: Simple Deployment Workflow ```yaml on: push: branches: [main] name: pkgdown permissions: contents: write jobs: pkgdown: runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 - uses: r-lib/actions/setup-r@v2 - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::pkgdown, local::. needs: website - name: Build and deploy run: | pkgdown::deploy_to_branch(new_process = FALSE) shell: Rscript {0} ``` ## Bootstrap 5 Theming ### Built-in Themes pkgdown includes several Bootstrap 5 themes: - `arrow-light` / `arrow-dark` (Tidyverse theme) - Standard Bootstrap 5 themes ```yaml template: bootstrap: 5 theme: arrow-light # or arrow-dark ``` ### Custom Color Scheme with bslib ```yaml template: bootstrap: 5 bslib: # Base colors bg: "#ffffff" # Background fg: "#212529" # Foreground text primary: "#0054AD" # Primary brand color secondary: "#6c757d" # Secondary color success: "#198754" info: "#0dcaf0" warning: "#ffc107" danger: "#dc3545" # Typography base_font: {google: "Roboto"} heading_font: {google: "Roboto Slab"} code_font: {google: "Fira Code"} font_scale: 1.0 # Spacing spacer: 1rem ``` ### Google Fonts Options Popular font combinations: ```yaml # Professional bslib: base_font: {google: "Atkinson Hyperlegible"} heading_font: {google: "Fraunces"} code_font: {google: "JetBrains Mono"} # Modern bslib: base_font: {google: "Inter"} heading_font: {google: "Inter"} code_font: {google: "Fira Code"} # Classic bslib: base_font: {google: "Lato"} heading_font: {google: "Merriweather"} code_font: {google: "Source Code Pro"} # Friendly bslib: base_font: {google: "Nunito"} heading_font: {google: "Nunito"} code_font: {google: "Ubuntu Mono"} ``` ## Reference Organization ### Grouping Functions by Purpose ```yaml reference: - title: "Core Functions" desc: "Main user-facing functions" contents: - has_concept("core") - title: "Data Processing" contents: - starts_with("process_") - starts_with("transform_") - title: "Plotting Functions" contents: - matches("plot|visualize|graph") - title: "S3 Methods" contents: - matches("\\.") - title: "Datasets" desc: "Example datasets included with the package" contents: - has_keyword("datasets") ``` ### Using Roxygen Concepts In your function documentation: ```r #' @concept core #' @concept data-import ``` Then in _pkgdown.yml: ```yaml reference: - title: "Core Functions" contents: - has_concept("core") - title: "Data Import" contents: - has_concept("data-import") ``` ## Articles Configuration ### Organizing Vignettes ```yaml articles: - title: "Getting Started" navbar: "Get Started" desc: "New to the package? Start here!" contents: - introduction - installation - quick-start - title: "Workflows" navbar: "Workflows" contents: - basic-workflow - advanced-workflow - batch-processing - title: "Reference" navbar: ~ # Don't show in navbar contents: - technical-details - algorithm-description ``` ## Common Pitfalls ### 1. URL Mismatch **Problem**: Website deploys but links are broken **Solution**: Ensure URLs match exactly in three places: ```r # DESCRIPTION URL: https://username.github.io/packagename/ # _pkgdown.yml url: https://username.github.io/packagename/ # GitHub Settings > Pages Source: gh-pages branch, / (root) ``` **Note**: Trailing slash matters! Be consistent. ### 2. GitHub Pages Not Enabling **Problem**: Workflow runs but site doesn't appear **Solution**: 1. Check GitHub repo Settings > Pages 2. Source should be "Deploy from a branch" 3. Branch should be "gh-pages" and "/ (root)" 4. Wait 2-3 minutes after first deployment 5. Check `https://username.github.io/packagename/` ### 3. Missing Dependencies **Problem**: Build fails with "package not found" **Solution**: Add to DESCRIPTION: ``` Suggests: pkgdown, knitr, rmarkdown ``` ### 4. Math Not Rendering
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen