docusaurus-lunr-search
Offline Search for Docusaurus V2, forked from original plugin docusaurus-lunr-search. The main difference from the original plugin it's the possibility to perform a versioned search compliant with the Docusaurus 2nd use case.
Sample
Prerequisites
worker_thread
is needed, suggested node version > 12.X
For older version of node use docusaurus-lunr-search
version 2.1.0
(npm i docusaurus-lunr-search@2.1.0
)
How to Use
- Install this package
npm i docusaurus-lunr-search --save
- Then run docusaurus swizzle
npm run swizzle docusaurus-lunr-search SearchBar
- Add the docusaurus-lunr-search plugin to your
docusaurus.config.js
module.exports = {
// ...
plugins: [
[
require.resolve('docusaurus-lunr-search')
],
]
}
- Then build your Docusaurus project
npm run build
- Serve your application
npx http-server ./build
Note: Docusaurus search information can only be generated from a production build. Local development is currently not supported.
Versioned search options
The plugin supports versioned search compliant with the Docusaurus 2nd use case:
module.exports = {
// ...
plugins: [
[
require.resolve('docusaurus-lunr-search'),
{
// Regex to get version name from the locations of the documents
// N.B: The Regex have to include one and only capturing group.
// This encloses the version name
// In this case will capture "docs/5.x","docs/6.x", ect.
versionPathRegex: "docs\\/(\\d+.x)"
}
],
]
}
If the documentation versioning is disabled the searching will include all documents.
Language options
module.exports = {
// ...
plugins: [[ require.resolve('docusaurus-lunr-search'), {
languages: ['en', 'de'] // language codes
}],
}
Supports all the language listed here https://github.com/MihaiValentin/lunr-languages
Other options
excludeRoutes
You can exclude certain routes from the search by using this option:
module.exports = {
// ...
plugins: [
[require.resolve('docusaurus-lunr-search'), {
excludeRoutes: [
'docs/changelogs/**/*', // exclude changelogs from indexing
]
}]
],
}
indexBaseUrl
Base url will not indexed by default, if you want to index the base url set this option to true
module.exports = {
// ...
plugins: [
[require.resolve('docusaurus-lunr-search'),
{
indexBaseUrl: true
}
]
],
}
Thanks to algolia/docsearch.js
, I modified it to create this search component
And thanks cmfcmf, I used the code from his library docusaurus-search-local for multi-language support.