Skip to content

quexpl/pagefind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pagefind

Actions Status Hex pm Hexdocs badge

Mix task for installing and invoking pagefind. Heavily inspired by tailwind and esbuild.

Installation

If available in Hex, the package can be installed by adding pagefind to your list of dependencies in mix.exs:

def deps do
  [
    {:pagefind, "~> 0.1.0"}
  ]
end

Once installed, change your config/config.exs and pick a version for the pagefind CLI of your choice:

config :pagefind, version: "1.3.0"

Now you can install pagefind by running:

$ mix pagefind.install

And invoke pagefind with:

$ mix pagefind --site dist --output-subdir search --exclude-selectors "#my_navigation, blockquote > span, [id^='prefix-']"

The executable is kept at _build/pagefind-TARGET. Where TARGET is your system target architecture.

Adding to Tableau

To add pagefind to an application using Tableau, you need only two steps:

First add a new extension which will trigger Pagefind in lib/extensions/pagefind_extension.ex:

defmodule MyAapp.PagefindExtension do
  use Tableau.Extension, enabled: true, type: :post_write, key: :search, priority: 500

  def run(token) do
    Pagefind.install_and_run([]);
    {:ok, token}
  end
end

Now let's change config/config.exs to configure pagefind:

config :pagefind, version: "1.3.0", args: ["--site", "_site"]

That's all.

License

Copyright (c) 2025 Piotr Baj.

pagefind source code is licensed under the MIT License.