Skip to content

Latest commit

 

History

History
104 lines (79 loc) · 2.3 KB

README.md

File metadata and controls

104 lines (79 loc) · 2.3 KB

Vitepress Simple Search

Vitepress needs better offline search. Let's make it simple and quick.

Thanks to everyone in this thread for offline search for getting the general idea implemented.

Features

  • Utilizes front-matter for page titles.
  • Auto-strips content of extra tags.
  • Auto-reads all markdown documents, and creates search data based on that.
  • Ability to change baseURL for doc pathing.
  • Ability to change regexp for content stripping and searching content.
  • Ability to use quotes for stricter search results in-search.
  • Option to change docs path.
  • Option to ignore specific files or folders based on partial naming.

Required

Make sure all of your markdown documents have title in their front matter.

Example:

---
title: 'My Cool Document'
---

# {{ $frontmatter.title }}

Content, and everything else...

Installing

npm i vitepress-plugin-simple-search

Add the plugin

Create a file in docs called vite.config.js or vite.config.ts.

// docs/vite.config.js
import { SimpleSearch } from "vitepress-plugin-simple-search";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [SimpleSearch()],
});

Additional Options

These can be passed through the SimpleSearch function.

export interface Options {
    /**
     * Base URL to use for content link replacement.
     *
     * @type {string}
     * @memberof Options
     */
    baseURL?: string;

    /**
     * Pathway to docs folder.
     * Must be an absolute path.
     * Defaults to 'docs' folder.
     *
     * @type {string}
     * @memberof Options
     */
    docsPath?: string;

    /**
     * A list of strings of partial file names or folders to ignore and not add to search.
     *
     * @type {Array<string>}
     * @memberof Options
     */
    partialsToIgnore?: Array<string>;

    /**
     * Used as a regex content remover for non-matching characters.
     * Setting this to undefined turns off all content stripping.
     * May have unintended side effects.
     *
     * @type {RegExp | undefined}
     * @memberof Options
     */
    regexForContentStripping?: RegExp | undefined;
}

Example

SimpleSearch({ baseURL: '/my-repo', regexForContentStripping: undefined });