Ein Metalsmith-Plugin zur Indexierung von Inhalten auf Algolia
Mit diesem Plugin können Sie Ihre Inhalte in der Algolia-Suchmaschine zum Metallschmiedebauprozess indizieren.
Wenn dieses Plugin nicht Ihren Anforderungen entspricht, zögern Sie bitte nicht, nach Funktionswünschen zu fragen.
npm install --save metalsmith-algolia
Das folgende Beispiel zeigt den Mindestcode, der zum Indexieren Ihrer Inhalte erforderlich ist. (Knoten: Metalsmith-Markdown ist nicht erforderlich)
const metalsmith = require ( 'metalsmith' ) ;
const markdown = require ( 'metalsmith-markdown' ) ;
const algolia = require ( 'metalsmith-algolia' ) ;
metalsmith ( __dirname )
. source ( './src' )
. use ( markdown ( ) )
. use ( algolia ( {
projectId : '<algolia-project-id>' ,
privateKey : '<algolia-private-key>' ,
index : '<algolia-index>'
} ) )
. build ( ) ;
Bitte verwenden Sie Befehlszeilenargumente oder Umgebungsvariablen, um Ihren privaten Algolia-Schlüssel zu speichern
Hier ist ein Beispiel mit einer gefälschten Markdown-Vorlage ./src/mypage.md
---
title : My awesome static page !
description : This is a exemple page
algolia : true
---
# My awesome static page !
content exemple
Standardmäßig werden Metadaten (Zeichenfolge/Boolescher Wert/Ganzzahlen) und Inhalte für alle Dateien mit algolia: true
-Metadaten an Algolia gesendet
In diesem Beispiel sieht das generierte Dokument so aus:
{
"title" : " My awesome static page ! " ,
"description" : " This is a exemple page " ,
"contents" : " <h1>My awesome static page ! n <p>content exemple</p> "
}
Wenn Sie Ihre Inhalte bereinigen, zusätzliche Felder berechnen oder Metadaten aus der Indizierung entfernen müssen, können Sie die Option fileParser
für den Plugin-Konstruktor verwenden, um einen benutzerdefinierten Rückruf zum Generieren Ihrer eigenen Dokumente zu geben:
const metalsmith = require ( 'metalsmith' ) ;
const markdown = require ( 'metalsmith-markdown' ) ;
const algolia = require ( 'metalsmith-algolia' ) ;
const cheerio = require ( 'cheerio' ) ;
function customFileParser ( file , metadata ) {
let documents = [ ] ;
let $ = cheerio . load ( metadata . contents . toString ( ) ) ;
// add as many as documents as you need
documents . push ( {
title : metadata . title ,
contents : $ ( 'p' ) . text ( ) ;
} )
return documents ;
}
metalsmith ( __dirname )
. source ( './src' )
. use ( markdown ( ) )
. use ( algolia ( {
projectId : '<algolia-project-id>' ,
privateKey : '<algolia-private-key>' ,
index : '<algolia-index>' ,
fileParser : customFileParser
} ) )
. build ( ) ;
Diesmal sieht das generierte Dokument so aus:
{
"title" : " My awesome static page ! " ,
"contents" : " content exemple "
}
Name | Standard | Beschreibung |
---|---|---|
projectId | (erforderlich) Algolia-Projektkennung | |
privateKey | (erforderlich) Privater Algolia-Schlüssel | |
index | (erforderlich) * Algolia-Index | |
clearIndex | FALSCH | Löschen Sie den Algolia-Index, bevor Sie neue Dokumente indizieren |
fileParser | null | Funktionsverweis auf einen benutzerdefinierten Handler zum Erstellen von Dokumenten |
pattern | **/* | Glob-Muster, mit dem Eingabedateien abgeglichen werden sollen. Kann ein Array oder eine einzelne Zeichenfolge sein |
Hinweis: Metalsmith-Algolia verwendet
debug