Closed qrac closed 1 year ago
全文検索に使うメモリはサイト全体のHTML量と同じで大きいため、開発で編集のたびに更新するのはパフォーマンス的によくなさそう。buildStart時に1度だけwriteJsonする仕様にする。
本番のjsonPathを指定しないといけなかったのを、内部で自動解決するようにした。
import { Search } from "minista"
// Before
export default function () {
return <Search jsonPath="/assets/search.json" />
}
// After
export default function () {
return <Search />
}
プラグインのtransformでコンポーネントをreplaceする手法は、リリース後だとキャッシュされてreplaceできないため不可。
プラグインの処理をコアよりも早くすることで解決される前にtransformできた。
また、開発中はoptimizeDepsでバンドルされてコンポーネントのidが判別できなくなるため minista
をexcludeする。
プラグインのtransformでコンポーネントをreplaceする手法の検証
故に、全文検索コンポーネントは開発中動いていない。
全文検索を使ったかどうかの判定を非同期ファイル生成とファイル確認に頼っていたが、どうも期待通りの順序で動いていないらしく、キャッシュのない1度目のビルドでsearch.jsonを生成できていない。
全文検索の判定はパースhtmlのqueryselectorで行う。
ビルド時はコンポーネントのtransformが効く。
相対パスビルドの場合にどうするかも検討。
fetchに相対パスを使うと使用しているページがベースURLになってしまうので相対パスとして機能しない。ライブラリによってはfetchにbaseURLを指定して動かす方法はある。
fetch("./search.json", {
baseURL: "https://example.com/assets/"
})
base: "./"
の場合もsearch周りはルートパスになるが、baseUrl
をオプションに加えるとビルド後のjsからのパスやリンクパスにbaseURLを追加できる仕様にした。
draft: true
は開発中は表示され、本番ビルドした場合は含まれない仕様に変更。納品前に確認できる方が良いため。
Partial Hydration #77 次第。開発中にメモリ上のみで済ませられると綺麗。