{"id":51129350,"url":"https://github.com/phothinmg/jekykll-pagefind","last_synced_at":"2026-07-16T23:34:55.339Z","repository":{"id":357943296,"uuid":"1239235976","full_name":"phothinmg/jekykll-pagefind","owner":"phothinmg","description":"Jekyll plugin that runs the Pagefind binary for a Jekyll site.","archived":false,"fork":false,"pushed_at":"2026-06-24T16:08:16.000Z","size":30641,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-12T21:18:02.826Z","etag":null,"topics":["jekyll","pagefind"],"latest_commit_sha":null,"homepage":"https://rubydoc.info/gems/jekyll-pagefind","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phothinmg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-14T22:35:03.000Z","updated_at":"2026-06-28T22:52:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/phothinmg/jekykll-pagefind","commit_stats":null,"previous_names":["phothinmg/jekykll-pagefind"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/phothinmg/jekykll-pagefind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phothinmg%2Fjekykll-pagefind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phothinmg%2Fjekykll-pagefind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phothinmg%2Fjekykll-pagefind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phothinmg%2Fjekykll-pagefind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phothinmg","download_url":"https://codeload.github.com/phothinmg/jekykll-pagefind/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phothinmg%2Fjekykll-pagefind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35560452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jekyll","pagefind"],"created_at":"2026-06-25T11:00:26.197Z","updated_at":"2026-07-16T23:34:55.334Z","avatar_url":"https://github.com/phothinmg.png","language":"Ruby","funding_links":[],"categories":["Search"],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n\u003c!-- markdownlint-disable MD041 --\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://pub-c9ba018358dd48a99b70013b65a25e5f.r2.dev/logo/rubygems_logo.webp\" width=\"160\" height=\"160\" alt=\"mmdevs\" style=\"border-radius:50%\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003ejekyll-pagefind\u003c/h1\u003e\n\n[![Gem Version](https://badge.fury.io/rb/jekyll-pagefind.svg?icon=si%3Arubygems)](https://badge.fury.io/rb/jekyll-pagefind)\n\n## Overview\n\nJekyll-Pagefind is a plugin that runs the Pagefind binary for a Jekyll site.\n\n## Install\n\nInstall the gem and add it to your application's Gemfile by running:\n\n```sh\nbundle add jekyll-pagefind\n```\n\nIn your `Gemfile`:\n\n```ruby\ngroup :jekyll_plugins do\n  # other jekyll plugins\n  gem 'jekyll-pagefind' # add pagefind plugin\nend\n```\n\n```sh\nbundle install\n```\n\nIf Bundler is not being used to manage dependencies, install the gem by running:\n\n```sh\ngem install jekyll-pagefind\n```\n\nRubyGems will install the platform-specific package that matches the host OS and CPU.\nIf no matching platform gem is selected, the generic `ruby` gem raises a clear error telling the user to add the deploy platform to `Gemfile.lock`.\n\n## Use\n\n### Jekyll site configuration\n\n**`_config.yml`**\n\n```yaml\nplugins:\n  # other plugin\n  - jekyll-pagefind\n# other config\n# Optional Jekyll Pagefind Options\njekyll_pagefind:\n  output_subdir: pagefind\n```\n\n---\n\n### Jekyll Pagefind options (optional)\n\nThese options map to the settings available in [Pagefind config files](https://pagefind.app/docs/config-sources/#:~:text=overriding%20configuration%20files.-,Config%20files,-Pagefind%20will%20look).\n\nFor more details, see [Pagefind CLI configuration options](https://pagefind.app/docs/config-options/). `jekyll_pagefind` supports the following options.\n\n#### 1. output_subdir\n\nThe folder where the search bundle is written, relative to Jekyll `{{ site.dest }}`. The default is `pagefind`.\n\n**Example:**\n\n```yaml\noutput_subdir: pf # becomes _site/pf\n```\n\n#### 2. exclude_selectors\n\nPass extra element selectors that Pagefind should ignore when indexing.\n\n**Example :**\n\n```yaml\nexclude_selectors:\n  - \"#my_navigation\"\n  - \"blockquote \u003e span\"\n  - \"[id^='prefix-']\"\n```\n\n#### 3. keep_index_url\n\nKeeps `index.html` at the end of search result paths. The default is `false`.\n\nBy default, a file at `animals/cat/index.html` will be given the URL `/animals/cat/`. Setting this option to true will result in the URL `/animals/cat/index.html`.\n\n#### 4. quiet\n\nLogs only errors and warnings while indexing the site.\n\n---\n\n### Pagefind UI\n\n#### 1. Using the Default UI\n\nUsing the Default UI is still supported, but it is no longer Pagefind's primary recommendation.\n\nYou can add the Pagefind UI to any page with the following snippet. The `/pagefind/` directory, or the directory specified by `output_subdir` in the [config](#1-output_subdir), will be created along with its files.\n\n```liquid\n\u003cscript src=\"{{ '/pagefind/pagefind-ui.js' | relative_url }}\"\u003e\u003c/script\u003e\n\u003clink rel=\"stylesheet\" href=\"{{ '/pagefind/pagefind-ui.css' | relative_url }}\" /\u003e\n\n\u003cdiv id=\"search\"\u003e\u003c/div\u003e\n\u003cscript\u003e\n    window.addEventListener('DOMContentLoaded', (event) =\u003e {\n        new PagefindUI({ element: \"#search\", showSubResults: true });\n    });\n\u003c/script\u003e\n```\n\nFor dark mode:\n\n```css\nbody.dark {\n  --pagefind-ui-primary: #eeeeee;\n  --pagefind-ui-text: #eeeeee;\n  --pagefind-ui-background: #152028;\n  --pagefind-ui-border: #152028;\n  --pagefind-ui-tag: #152028;\n}\n```\n\nFor more details, see [Using the Default UI](https://pagefind.app/docs/ui-usage/).\n\n#### 2. Pagefind Component UI\n\nAdd the following snippet to `\u003chead\u003e`. The `/pagefind/` directory, or the directory specified by `output_subdir` in the [config](#1-output_subdir), will be created along with its files.\n\n```liquid\n\u003cscript src=\"{{ '/pagefind/pagefind-component-ui.js' | relative_url }}\" type=\"module\"\u003e\u003c/script\u003e\n\u003clink rel=\"stylesheet\" href=\"{{ '/pagefind/pagefind-component-ui.css' | relative_url }}\" /\u003e\n```\n\nFor dark mode:\n\n```html\n\u003cdiv data-pf-theme=\"dark\"\u003e\n  \u003cpagefind-searchbox\u003e\u003c/pagefind-searchbox\u003e\n\u003c/div\u003e\n```\n\n```css\n@media (prefers-color-scheme: dark) {\n  :root {\n    --pf-text: #e5e5e5;\n    --pf-text-secondary: #a0a0a0;\n    --pf-text-muted: #949494;\n    --pf-background: #1a1a1a;\n    --pf-border: #333;\n    --pf-border-focus: #555;\n    --pf-skeleton: #2a2a2a;\n    --pf-skeleton-shine: #333;\n    --pf-hover: #252525;\n    --pf-mark: #e5e5e5;\n    --pf-scroll-shadow: rgba(255, 255, 255, 0.1);\n    --pf-outline-focus: #58a6ff;\n\n    --pf-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);\n    --pf-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);\n    --pf-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.5);\n\n    --pf-error-bg: #2a1a1a;\n    --pf-error-border: #5c2828;\n    --pf-error-text: #f87171;\n    --pf-error-text-secondary: #ef4444;\n  }\n}\n```\n\nFor more details, see [Pagefind Component UI](https://pagefind.app/docs/search-ui/).\n\n---\n\n## Contributing\n\n## Maintainer Release Notes\n\nThis gem is published as platform-specific packages so users only download the binary for their host OS.\n\nBuild the current host variant:\n\n```sh\nmake build\n```\n\nRun the fixture-based smoke test:\n\n```sh\nmake smoke-test\n```\n\nBuild every supported variant:\n\n```sh\nmake build-all\n```\n\nPublish the built platform gems for a version:\n\n```sh\nmake publish\n```\n\nGitHub Actions trusted publishing is supported.\n\nTo enable it on RubyGems.org for this repo:\n\n1. Open the `jekyll-pagefind` gem page.\n2. Go to `Trusted publishers`.\n3. Create a publisher with repository `phothinmg/jekyll-pagefind`, workflow filename `release.yml`, and environment `release`.\n\nAfter that, pushing a tag like `v0.3.2` will run `.github/workflows/release.yml` and publish all built gems without a stored API token or manual OTP entry.\n\n`bin/build-platform-gems` currently maps these asset folders to RubyGems platforms:\n\n- `ruby` -\u003e `ruby` (generic fallback gem with no bundled binary)\n- `assets/linux-x64` -\u003e `x86_64-linux-gnu`, `x86_64-linux-musl`\n- `assets/linux-arm64` -\u003e `aarch64-linux-gnu`, `aarch64-linux-musl`\n- `assets/macos-x64` -\u003e `x86_64-darwin`\n- `assets/macos-arm64` -\u003e `arm64-darwin`\n- `assets/windows-x64` -\u003e `x64-mingw32`, `x64-mingw-ucrt`\n- `assets/windows-arm64` -\u003e `arm64-mingw32`, `arm64-mingw-ucrt`\n\nBug reports and pull requests are welcome on GitHub at \u003chttps://github.com/phothinmg/jekyll-pagefind\u003e. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/phothinmg/jekyll-pagefind/blob/master/CODE_OF_CONDUCT.md).\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the Jekyll::Pagefind project's codebase, issue trackers, chat rooms, and mailing lists is expected to follow the [code of conduct](https://github.com/phothinmg/jekyll-pagefind/blob/master/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphothinmg%2Fjekykll-pagefind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphothinmg%2Fjekykll-pagefind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphothinmg%2Fjekykll-pagefind/lists"}