vite-plugin-pagefind
raw JSON → 1.1.1 verified Mon Apr 27 auth: no javascript
A Vite plugin that integrates Pagefind search indexing into Vite projects. v1.1.1 (stable) supports Vite >=4.0.0 and enables Pagefind to work during development with configurable strategies (lazy/eager). Unlike manual Pagefind setup, this plugin provides seamless Vite integration, TypeScript types, and inline configuration (removed JSON config support in v1.0.0). Release cadence: ~2-3 months. Key differentiator: fully inlined config and dev-mode indexing.
Common errors
error Error: Cannot find module 'vite-plugin-pagefind' ↓
cause Package not installed or import path incorrect.
fix
Ensure plugin is installed: pnpm add -D vite-plugin-pagefind, and use correct import path: 'vite-plugin-pagefind'.
error TypeError: pagefind is not a function ↓
cause Default import instead of named import.
fix
Change to import { pagefind } from 'vite-plugin-pagefind'.
error Error: build script not found ↓
cause The buildScript option refers to a script that does not exist in package.json.
fix
Define the script in package.json scripts, or set buildScript to 'build' (default) and ensure it exists.
error The 'pagefind' package is not installed ↓
cause Missing runtime dependency.
fix
Install pagefind: pnpm add -D pagefind.
Warnings
breaking v1.0.0 removed support for pagefind.json config. All options must be passed inline to the plugin. ↓
fix Move any pagefind.json settings into the plugin options object in vite.config.ts.
gotcha The 'developStrategy' option defaults to 'lazy', which only indexes if the bundle directory is missing. Use 'eager' if you need indexing on every dev start. ↓
fix Set developStrategy: 'eager' in plugin options.
gotcha The 'pagefind' package is required as a dependency; it is not automatically installed. ↓
fix Install pagefind separately: pnpm add -D pagefind.
gotcha Importing 'pagefind' as default will result in undefined because the export is named. ↓
fix Use named import: import { pagefind } from 'vite-plugin-pagefind'.
deprecated v0.x used pagefind.json for configuration; that file is ignored in v1.0.0+. ↓
fix Remove pagefind.json and pass options inline.
Install
npm install vite-plugin-pagefind yarn add vite-plugin-pagefind pnpm add vite-plugin-pagefind Imports
- pagefind wrong
import pagefind from 'vite-plugin-pagefind'correctimport { pagefind } from 'vite-plugin-pagefind' - Pagefind wrong
import { Pagefind } from 'vite-plugin-pagefind'correctimport type { Pagefind } from 'vite-plugin-pagefind/types' - default wrong
import pagefind from 'vite-plugin-pagefind'correctconst plugin = require('vite-plugin-pagefind'); plugin.pagefind({...})
Quickstart
// pnpm add -D pagefind vite-plugin-pagefind
// vite.config.ts
import { defineConfig } from 'vite';
import { pagefind } from 'vite-plugin-pagefind';
export default defineConfig({
plugins: [
pagefind({
outputDirectory: 'dist',
assetsDirectory: 'public',
bundleDirectory: 'pagefind',
buildScript: 'build',
developStrategy: 'lazy',
}),
],
});
// package.json
{
"scripts": {
"build": "vite build && pagefind --site 'dist'"
}
}