This extension provides Algolia search integration for Diplodoc documentation. It handles the indexing of documentation content into Algolia indices and manages search functionality.
extensions/algolia/
├── src/
│ ├── index.ts # Main extension entry point and CLI program
│ ├── provider.ts # Algolia provider implementation
│ ├── config.ts # Configuration types and defaults
│ ├── types.ts # TypeScript type definitions
│ └── hooks.ts # Extension hooks and integration points
├── dist/ # Compiled JavaScript output
└── package.json # Package configuration and dependencies
Main entry point of the extension that implements the CLI program. Key features:
- Defines the
AlgoliaProgram
class that extendsBaseProgram
- Handles command-line arguments and configuration
- Integrates with Diplodoc's build and search hooks
- Manages the indexing process during documentation builds
Implements the core Algolia functionality:
AlgoliaProvider
class for managing Algolia indices- Methods for adding and processing documentation content
- Handles multi-language support
- Manages index settings and configurations
- Provides search functionality
Key methods:
add(path, lang, info)
: Processes and adds documentation content to the indexaddObjects()
: Uploads processed content to AlgoliaclearIndex()
: Removes all objects from the indexsetSettings(settings)
: Updates index configurationrelease()
: Finalizes the indexing process
Contains configuration types and defaults:
- Defines the
AlgoliaConfig
interface - Provides default configuration values
- Handles environment variable integration
TypeScript type definitions:
IndexRecord
: Structure for indexed documentation contentProviderConfig
: Configuration for the Algolia provider- Other shared types and interfaces
Extension hooks for Diplodoc integration:
- Defines integration points with Diplodoc's build system
- Manages search provider registration
- Handles build-time indexing
npm install @diplodoc/algolia
The extension can be configured through:
- Environment variables:
ALGOLIA_APP_ID
ALGOLIA_API_KEY
ALGOLIA_INDEX_NAME
- Command-line arguments:
--app-id
--api-key
--index-name
--input
(path to documentation)
The extension automatically integrates with Diplodoc's build process:
- During documentation build, content is processed and indexed
- Search functionality is automatically enabled
- Multi-language support is handled automatically
To work on the extension:
- Clone the repository
- Install dependencies:
npm install
- Build the extension:
npm run build
- Test changes in your Diplodoc project
Here are some practical examples for testing the extension:
- Basic Build and Index
# Build documentation and index it to Algolia
node build/index.js -i ../../../docs -o ../../../docs-o --extensions /path/to/algolia/dist/index.js
- Index Only Command
# Only run the indexing process (useful for testing index updates)
node build/index.js index -i ../../../docs-o --extensions /path/to/algolia/dist/index.js
- With Environment Variables
# Set Algolia credentials via environment variables
export ALGOLIA_APP_ID="your-app-id"
export ALGOLIA_API_KEY="your-api-key"
export ALGOLIA_INDEX_NAME="your-index-name"
node build/index.js -i ../../../docs -o ../../../docs-o --extensions /path/to/algolia/dist/index.js
- With Command Line Arguments
# Provide credentials via command line
node build/index.js -i ../../../docs -o ../../../docs-o \
--extensions /path/to/algolia/dist/index.js \
--app-id "your-app-id" \
--api-key "your-api-key" \
--index-name "your-index-name"
- Debug Mode
# Enable debug logging
DEBUG=diplodoc:* node build/index.js -i ../../../docs -o ../../../docs-o --extensions /path/to/algolia/dist/index.js
-
Local Development
- Use a separate Algolia index for testing
- Monitor the
_search
directory in your output folder for generated JSON files - Check Algolia dashboard for indexed content
-
Troubleshooting
- If indexing fails, check the generated JSON files in
_search
directory - Verify Algolia credentials and index permissions
- Use debug mode for detailed logging
- If indexing fails, check the generated JSON files in
-
Common Issues
- Missing environment variables: Ensure all required Algolia credentials are set
- Permission errors: Verify API key has correct permissions
- Index not updating: Check if
uploadDuringBuild
is enabled in configuration
MIT