Este complemento está en versión beta y aún no es compatible oficialmente
No dude en abrir números para cualquier pregunta o idea.
Puede especificar una lista de consultas para ejecutar y cómo transformarlas en una matriz de objetos para indexar. Cuando ejecute gatsby build
, los publicará en Algolia.
gráfico LR
A[Fuente 1] --> |consulta| gatsby
B[Fuente 2] --> |consulta| gatsby
C[Fuente 3] --> |consulta| gatsby
Gatsby --> |construcción gatsby| Algolia
Aquí tenemos un ejemplo con algunos datos que quizás no sean muy relevantes, pero que funcionarán con la configuración predeterminada de gatsby new
yarn add gatsby-plugin-algolia
Primero agregue las credenciales a un archivo .env, que no enviará. Si realiza un seguimiento de esto en su archivo, y especialmente si el sitio es de código abierto, perderá su clave API de administrador. Esto significaría que cualquiera puede cambiar cualquier cosa en su índice de Algolia.
// .env.production
ALGOLIA_APP_ID=XXX
ALGOLIA_API_KEY=XXX
ALGOLIA_INDEX_NAME=XXX
require ( 'dotenv' ) . config ( {
path : `.env. ${ process . env . NODE_ENV } ` ,
} ) ;
// gatsby-config.js
const myQuery = `
query {
pages: allSitePage {
nodes {
# querying id is required
id
component
path
componentChunkName
jsonName
internal {
# querying internal.contentDigest is required
contentDigest
type
owner
}
}
}
}
` ;
const queries = [
{
query : myQuery ,
queryVariables : { } , // optional. Allows you to use graphql query variables in the query
transformer : ( { data } ) => data . pages . nodes , // optional
indexName : 'index name to target' , // overrides main index name, optional
settings : {
// optional, any index settings
// Note: by supplying settings, you will overwrite all existing settings on the index
} ,
mergeSettings : false , // optional, defaults to false. See notes on mergeSettings below
} ,
] ;
module . exports = {
plugins : [
{
// This plugin must be placed last in your list of plugins to ensure that it can query all the GraphQL data
resolve : `gatsby-plugin-algolia` ,
options : {
appId : process . env . ALGOLIA_APP_ID ,
// Use Admin API key without GATSBY_ prefix, so that the key isn't exposed in the application
// Tip: use Search API key with GATSBY_ prefix to access the service from within components
apiKey : process . env . ALGOLIA_API_KEY ,
indexName : process . env . ALGOLIA_INDEX_NAME , // for all queries
queries ,
chunkSize : 10000 , // default: 1000
settings : {
// optional, any index settings
// Note: by supplying settings, you will overwrite all existing settings on the index
} ,
mergeSettings : false , // optional, defaults to false. See notes on mergeSettings below
concurrentQueries : false , // default: true
dryRun : false , // default: false, only calculate which objects would be indexed, but do not push to Algolia
continueOnFailure : false , // default: false, don't fail the build if Algolia indexing fails
algoliasearchOptions : undefined , // default: { timeouts: { connect: 1, read: 30, write: 30 } }, pass any different options to the algoliasearch constructor
} ,
} ,
] ,
} ;
El índice se sincronizará con el nombre del índice proporcionado en Algolia en el paso build
en Gatsby. Esto no se hace antes para evitar que se supere la cuota durante el desarrollo.
Este complemento actualizará solo los nodos modificados o eliminados en su sitio Gatsby.
Confiamos en el campo contentDigest
predeterminado de Gatsby, así que asegúrese de consultarlo.
Puede establecer la configuración para cada índice individualmente (por consulta) o, de lo contrario, mantendrá la configuración existente.
mergeSettings
le permite conservar los cambios de configuración realizados en el sitio web de Algolia. El comportamiento predeterminado ( mergeSettings: false
) borrará la configuración de su índice y la reemplazará con la configuración de la configuración en cada compilación.
Cuando se establece en verdadero, la configuración del índice de configuración se fusionará con la configuración del índice existente en Algolia (con la configuración del índice de configuración teniendo prioridad).
NOTA: Al utilizar mergeSettings
, cualquier configuración eliminada de la configuración seguirá persistiendo ya que seguirá existiendo en Algolia. Si desea eliminar una configuración, asegúrese de eliminarla tanto de la configuración como del sitio web de Algolia.
A veces, en plataformas limitadas como Netlify, las consultas simultáneas al mismo índice pueden generar resultados inesperados o compilaciones bloqueadas. Establecer concurrentQueries
en false
hace que las consultas se ejecuten secuencialmente en lugar de simultáneamente, lo que puede resolver algunos problemas de acceso simultáneo. Tenga en cuenta que esta opción puede hacer que la indexación tarde más de lo normal.
El campo transformer
acepta una función y, opcionalmente, puede proporcionar una función async
.
Agregar un parámetro de transformador puede resultar útil si internal.contentDigest
es más estable que su objeto. Por ejemplo, puede reemplazar el internal.contentDigest
proporcionado por Gatsby con un hash del objeto.
const crypto = require ( 'crypto' ) ;
function transformer ( data ) {
return data . map ( item => {
const hash = crypto
. createHash ( 'md5' )
. update ( JSON . stringify ( item ) )
. digest ( 'hex' ) ;
return {
... item ,
internal : {
... item . internal ,
contentDigest : hash ,
} ,
} ;
} ) ;
}
Esta es la primera versión de nuestro complemento y aún no cuenta con soporte oficial. Por favor, deje todos sus comentarios sobre los problemas de GitHub.
Esto podría estar sucediendo por varias razones:
Estás utilizando el complemento gatsby-plugin-algolia
en modo de desarrollo. El complemento solo se enviará a Algolia cuando ejecute gatsby build
. Esto es para evitar que superes tu cuota durante el desarrollo.
internal.contentDigest
estático Algunos complementos de Gatsby no crean un nuevo internal.contentDigest
, incluso si el contenido ha cambiado. Para solucionar este problema, utilice un transformer
para crear un nuevo internal.contentDigest
basado en el contenido del nodo.