Un plugin metalsmith pour indexer le contenu sur Algolia
Ce plugin vous permet d'indexer votre contenu dans le moteur de recherche Algolia sur le processus de construction métallurgique.
Si ce plugin ne répond pas à vos besoins, n'hésitez pas à demander des demandes de fonctionnalités.
npm install --save metalsmith-algolia
L'exemple ci-dessous montre le code minimum requis pour indexer votre contenu. (nœud : metalsmith-markdown n'est pas requis)
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 ( ) ;
s'il vous plaît, utilisez des arguments de ligne de commande ou des variables d'environnement pour stocker votre clé privée algolia
Voici un exemple avec un faux modèle de démarque ./src/mypage.md
---
title : My awesome static page !
description : This is a exemple page
algolia : true
---
# My awesome static page !
content exemple
Par défaut, les métadonnées (chaîne/booléen/entiers) et le contenu seront envoyés à Algolia pour tous les fichiers avec algolia: true
métadonnées
Avec cet exemple, le document généré ressemblera à :
{
"title" : " My awesome static page ! " ,
"description" : " This is a exemple page " ,
"contents" : " <h1>My awesome static page ! n <p>content exemple</p> "
}
Si vous avez besoin de nettoyer votre contenu, de calculer des champs supplémentaires ou de supprimer des métadonnées de l'indexation, vous pouvez utiliser l'option fileParser
du constructeur de plug-in pour donner un rappel personnalisé afin de générer vos propres documents :
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 ( ) ;
Cette fois, le document généré ressemblera à :
{
"title" : " My awesome static page ! " ,
"contents" : " content exemple "
}
nom | défaut | description |
---|---|---|
projectId | (obligatoire) Identifiant du projet Algolia | |
privateKey | (obligatoire) Clé privée Algolia | |
index | (obligatoire) * Indice Algolia | |
clearIndex | FAUX | Effacer l'index Algolia avant d'indexer de nouveaux documents |
fileParser | nul | Référence de fonction à un gestionnaire personnalisé pour la création de documents |
pattern | **/* | Modèle Glob pour faire correspondre les fichiers d’entrée. Peut être un tableau ou une seule chaîne |
indice : metalsmith-algolia utilise
debug