README.md

# Pagefind

Mix task for installing and invoking [pagefind](https://www.pagefind.app).
Heavily inspired by tailwind and esbuild.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `pagefind` to your list of dependencies in `mix.exs`:

```elixir
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:

```elixir
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`:

```elixir
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`:

```elixir
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](LICENSE.md).