Pagefind というパッケージを使って記事内容の検索をおこないます。
npm add pagefind @pagefind/default-uiビルドします。
npm run buildインデックス作成。
npx pagefind --site distコマンド画面で以下のように表示されます。
[Building search indexes]Total: Indexed 1 language Indexed 9 pages Indexed 484 words Indexed 0 filters Indexed 0 sortssrc/components に Search.astro を作成します。
---import "@pagefind/default-ui/css/ui.css";---
<div class="search"></div>
<script> import { PagefindUI } from "@pagefind/default-ui";
new PagefindUI({ element: ".search", });</script>src/pages/index.astro を編集します。
--- import Search from "../components/Search.astro"; --- ... <h2>全文検索</h2>
<p> 以下のウィンドウにキーワード入力すると検索されます。 </p>
<Search />本来はこれだけで動くようですが、私のローカル環境ではどうしても動きません。
ちょっとハマりました。
Firefox なのでブラウザのウェブ開発ツールからコンソールを確認すると、
MIME タイプ (“text/html”) が許可されていないため、“http://localhost:4321/pagefind/pagefind.js” からのモジュールの読み込みがブロックされました。linux mint 21.3 + Firefox という環境ですが、アレコレやってみても解決しません。
で、ふと思ったのはローカル環境ではダメでもサーバーにデプロイすれば動くかもしれない…。
試しにデプロイすると見事に動きました。
ビルドしてデプロイする時にインデックスを自動で作成します。
package.json のビルドを以下のように変更します。
{ "scripts": { "build": "astro build && pagefind --site dist" }}