{"id":45877170,"url":"https://github.com/mcclowes/docusaurus-plugin-glossary","last_synced_at":"2026-02-27T12:24:40.890Z","repository":{"id":322227553,"uuid":"1088209252","full_name":"mcclowes/docusaurus-plugin-glossary","owner":"mcclowes","description":"A docusaurus plugin for helping users understand key terms.","archived":false,"fork":false,"pushed_at":"2025-12-16T15:47:00.000Z","size":2395,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-20T06:49:34.479Z","etag":null,"topics":["docusaurus","glossary","plugin","terms"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/docusaurus-plugin-glossary","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcclowes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-02T14:30:40.000Z","updated_at":"2025-12-16T15:47:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mcclowes/docusaurus-plugin-glossary","commit_stats":null,"previous_names":["mcclowes/docusaurus-plugin-glossary"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/mcclowes/docusaurus-plugin-glossary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcclowes%2Fdocusaurus-plugin-glossary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcclowes%2Fdocusaurus-plugin-glossary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcclowes%2Fdocusaurus-plugin-glossary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcclowes%2Fdocusaurus-plugin-glossary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcclowes","download_url":"https://codeload.github.com/mcclowes/docusaurus-plugin-glossary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcclowes%2Fdocusaurus-plugin-glossary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29894849,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T12:09:13.686Z","status":"ssl_error","status_checked_at":"2026-02-27T12:09:13.282Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docusaurus","glossary","plugin","terms"],"created_at":"2026-02-27T12:24:40.287Z","updated_at":"2026-02-27T12:24:40.871Z","avatar_url":"https://github.com/mcclowes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docusaurus-plugin-glossary\n\n[![npm version](https://img.shields.io/npm/v/docusaurus-plugin-glossary.svg)](https://www.npmjs.com/package/docusaurus-plugin-glossary)\n[![ci](https://github.com/mcclowes/docusaurus-plugin-glossary/actions/workflows/ci.yml/badge.svg)](https://github.com/mcclowes/docusaurus-plugin-glossary/actions/workflows/ci.yml)\n\n![docusaurus-plugin-glossary banner](banner.png)\n\nA comprehensive Docusaurus plugin that provides glossary functionality with an auto-generated glossary page, searchable terms, and inline term tooltips.\n\n\u003e Compatibility: Fully compatible with Docusaurus v3 (MDX v3). If you were on a v2-era fork, please upgrade to the latest 2.x release of this plugin.\n\n## Features\n\n- **Auto-generated Glossary Page**: Displays all terms alphabetically with letter navigation\n- **Search Functionality**: Real-time search across terms and definitions\n- **GlossaryTerm Component**: Inline component for linking terms with tooltip previews\n- **Automatic Term Detection**: Automatically detect and link glossary terms in markdown files with tooltips\n- **Responsive Design**: Mobile-friendly UI with dark mode support\n- **Related Terms**: Link between related glossary terms\n- **Abbreviation Support**: Display full form of abbreviated terms\n- **Customizable**: Configure glossary path and route\n\n## Quick Start\n\n1. **Install the plugin:**\n\n   ```bash\n   npm install docusaurus-plugin-glossary\n   ```\n\n2. **Use the preset in your `docusaurus.config.js`:**\n\n   ```javascript\n   module.exports = {\n     presets: [\n       [\n         'docusaurus-plugin-glossary/preset',\n         {\n           // Glossary configuration\n           glossary: {\n             glossaryPath: 'glossary/glossary.json',\n             routePath: '/glossary',\n           },\n           // Standard Docusaurus preset-classic options\n           docs: {\n             sidebarPath: './sidebars.js',\n           },\n           blog: {\n             showReadingTime: true,\n           },\n           theme: {\n             customCss: './src/css/custom.css',\n           },\n         },\n       ],\n     ],\n   };\n   ```\n\n   **That's it!** The preset automatically configures the glossary plugin and remark plugin for you.\n\n3. **Create your glossary file at `glossary/glossary.json`:**\n\n   ```json\n   {\n     \"description\": \"A collection of technical terms and their definitions\",\n     \"terms\": [\n       {\n         \"term\": \"API\",\n         \"abbreviation\": \"Application Programming Interface\",\n         \"definition\": \"A set of rules and protocols that allows different software applications to communicate with each other.\",\n         \"relatedTerms\": [\"REST\", \"GraphQL\"]\n       },\n       {\n         \"term\": \"REST\",\n         \"abbreviation\": \"Representational State Transfer\",\n         \"definition\": \"An architectural style for designing networked applications.\",\n         \"relatedTerms\": [\"API\", \"HTTP\"]\n       }\n     ]\n   }\n   ```\n\n4. **Start your dev server:**\n\n   ```bash\n   npm run start\n   ```\n\n5. **That's it!**\n   - Visit `/glossary` to see your glossary page\n   - Write markdown normally - terms will automatically be linked with tooltips\n   - Use `\u003cGlossaryTerm\u003e` component in MDX for manual control\n\n## Installation\n\n### Install from npm (Recommended)\n\n```bash\nnpm install docusaurus-plugin-glossary\n```\n\n## Usage Guide\n\n### Step 1: Create Your Glossary File\n\nCreate a JSON file at `glossary/glossary.json` (or your configured path) in your Docusaurus site root:\n\n```json\n{\n  \"description\": \"A collection of technical terms and their definitions\",\n  \"terms\": [\n    {\n      \"term\": \"API\",\n      \"abbreviation\": \"Application Programming Interface\",\n      \"definition\": \"A set of rules and protocols that allows different software applications to communicate with each other.\",\n      \"relatedTerms\": [\"REST\", \"GraphQL\"]\n    },\n    {\n      \"term\": \"REST\",\n      \"abbreviation\": \"Representational State Transfer\",\n      \"definition\": \"An architectural style for designing networked applications.\",\n      \"relatedTerms\": [\"API\", \"HTTP\"]\n    }\n  ]\n}\n```\n\n**Required fields:**\n\n- `term` (string): The glossary term name\n- `definition` (string): The term's definition\n\n**Optional fields:**\n\n- `abbreviation` (string): The full form if the term is an abbreviation\n- `relatedTerms` (string[]): Array of related term names that link to other glossary entries\n- `id` (string): Custom ID for linking (auto-generated from term name if not provided)\n\n### Step 2: Configure the Plugin\n\n#### Option A: Using the Preset (Recommended)\n\nThe easiest way to configure the plugin is using the preset:\n\n```javascript\nmodule.exports = {\n  presets: [\n    [\n      'docusaurus-plugin-glossary/preset',\n      {\n        glossary: {\n          glossaryPath: 'glossary/glossary.json',\n          routePath: '/glossary',\n        },\n        // All standard preset-classic options work here\n        docs: {\n          sidebarPath: './sidebars.js',\n        },\n        blog: {\n          showReadingTime: true,\n        },\n        theme: {\n          customCss: './src/css/custom.css',\n        },\n      },\n    ],\n  ],\n};\n```\n\nThe preset automatically configures both the glossary plugin and the remark plugin for automatic term detection.\n\n#### Option B: Manual Configuration (Advanced)\n\nIf you need more control or want to use the plugin alongside the classic preset separately:\n\n```javascript\nconst glossaryPlugin = require('docusaurus-plugin-glossary');\n\nmodule.exports = {\n  presets: [\n    [\n      '@docusaurus/preset-classic',\n      {\n        docs: {\n          // Add the remark plugin to enable auto-linking in docs\n          remarkPlugins: [\n            glossaryPlugin.getRemarkPlugin(\n              {\n                glossaryPath: 'glossary/glossary.json',\n                routePath: '/glossary',\n              },\n              { siteDir: __dirname }\n            ),\n          ],\n        },\n        pages: {\n          // Add the remark plugin to enable auto-linking in pages\n          remarkPlugins: [\n            glossaryPlugin.getRemarkPlugin(\n              {\n                glossaryPath: 'glossary/glossary.json',\n                routePath: '/glossary',\n              },\n              { siteDir: __dirname }\n            ),\n          ],\n        },\n      },\n    ],\n  ],\n  plugins: [\n    [\n      'docusaurus-plugin-glossary',\n      {\n        glossaryPath: 'glossary/glossary.json',\n        routePath: '/glossary',\n      },\n    ],\n  ],\n};\n```\n\n**Alternative: Using remarkPlugin directly**\n\nYou can also use the `remarkPlugin` export directly if you prefer:\n\n```javascript\nconst glossaryPlugin = require('docusaurus-plugin-glossary');\n\nmodule.exports = {\n  presets: [\n    [\n      '@docusaurus/preset-classic',\n      {\n        docs: {\n          remarkPlugins: [\n            [\n              glossaryPlugin.remarkPlugin,\n              {\n                glossaryPath: 'glossary/glossary.json',\n                routePath: '/glossary',\n                siteDir: __dirname,\n              },\n            ],\n          ],\n        },\n      },\n    ],\n  ],\n  plugins: [\n    [\n      'docusaurus-plugin-glossary',\n      {\n        glossaryPath: 'glossary/glossary.json',\n        routePath: '/glossary',\n      },\n    ],\n  ],\n};\n```\n\n## How It Works\n\nThis plugin uses a **hybrid approach** combining build-time transformation and runtime enhancements, inspired by `docusaurus-plugin-image-zoom`:\n\n### Build-Time: Remark Plugin\n\nThe remark plugin automatically detects glossary terms in your markdown and:\n\n1. Transforms plain text terms into `\u003cGlossaryTerm\u003e` JSX components\n2. Automatically injects the necessary import statement (`import GlossaryTerm from '@theme/GlossaryTerm';`)\n3. This happens during the MDX compilation, before React renders anything\n\n**No manual imports needed!** When you write:\n\n```markdown\nOur API uses REST principles.\n```\n\nThe remark plugin transforms it to:\n\n```jsx\nimport GlossaryTerm from '@theme/GlossaryTerm';\n\nOur \u003cGlossaryTerm term=\"API\"\u003eAPI\u003c/GlossaryTerm\u003e uses \u003cGlossaryTerm term=\"REST\"\u003eREST\u003c/GlossaryTerm\u003e principles.\n```\n\n### Runtime: Client Modules\n\nThe plugin uses Docusaurus's `getClientModules()` API to automatically load client-side code on every page. This ensures:\n\n- Glossary term functionality is available globally without configuration\n- Components initialize correctly on each route change\n- No performance impact from manual module loading\n\n### Theme Components\n\nThe `GlossaryTerm` component is provided via the theme system (`@theme/GlossaryTerm`), making it:\n\n- Available to all MDX files through automatic imports\n- Swizzlable for custom styling and behavior\n- Accessible to both the remark plugin and manual usage\n\n## Docusaurus v3 Notes and Troubleshooting\n\n- **MDX imports**: The plugin automatically injects `import GlossaryTerm from '@theme/GlossaryTerm';` when it auto-links a term. You can also use it manually in MDX:\n\n  ```mdx\n  import GlossaryTerm from '@theme/GlossaryTerm';\n\n  Our \u003cGlossaryTerm term=\"API\" /\u003e uses \u003cGlossaryTerm term=\"REST\"\u003eRESTful\u003c/GlossaryTerm\u003e principles.\n  ```\n\n- **No tooltips or no auto-linking?**\n  - Confirm you're on `@docusaurus/core@^3` and `react@^18`.\n  - Ensure the plugin is listed in `plugins` AND the remark plugin is configured in your preset (see Step 2 above).\n  - Visit `/glossary`. If the page or route fails to render, verify your `glossaryPath` file exists and contains a `terms` array.\n  - Clear your Docusaurus cache with `npm run clear` and restart your dev server.\n  - If you previously used an older version (v1.0.x), upgrade to the latest version; the plugin bundles the v3-compatible theme and remark integration.\n\n- **Opting out of auto-linking**: Simply don't configure the remark plugin in your preset. You can still use the `\u003cGlossaryTerm /\u003e` component manually where you want explicit control.\n\n### Step 3: Use Glossary Terms in Your Content\n\n#### Option A: Automatic Detection (Recommended)\n\nWith the remark plugin configured, glossary terms are **automatically detected and linked** in all your markdown files. Simply write your content normally:\n\n```markdown\nOur API uses REST principles to provide a simple interface.\n\nThis project supports webhooks for real-time notifications.\n```\n\nTerms like \"API\", \"REST\", and \"webhooks\" will automatically be:\n\n- Detected if they're defined in your glossary\n- Styled with a dotted underline\n- Display a tooltip with the definition on hover\n- Link to the full glossary page entry\n\n**Limitations:**\n\n- Only whole words are matched (respects word boundaries)\n- Terms inside code blocks, links, or existing MDX components are **not** processed\n- Matching is case-insensitive\n\n#### Option B: Manual Component Usage\n\nFor more control or when automatic detection isn't sufficient, use the `GlossaryTerm` component in MDX files:\n\n```jsx\nimport GlossaryTerm from '@theme/GlossaryTerm';\n\nThis website uses an \u003cGlossaryTerm term=\"API\"\u003eAPI\u003c/GlossaryTerm\u003e to fetch data.\n\n// Or with explicit definition (overrides glossary entry):\nWe use \u003cGlossaryTerm term=\"REST\" definition=\"Representational State Transfer\" /\u003e for our services.\n\n// Or with children content:\nOur \u003cGlossaryTerm term=\"API\" definition=\"Application Programming Interface\"\u003eRESTful API\u003c/GlossaryTerm\u003e is available.\n```\n\n**Component props:**\n\n- `term` (required): The term name (used to look up definition from glossary)\n- `definition` (optional): Override the definition from the glossary file\n- `children` (optional): Custom text to display (defaults to term name)\n\n### Step 4: Access the Glossary Page\n\nThe glossary page is automatically available at `/glossary` (or your configured `routePath`).\n\n**Features:**\n\n- Alphabetical grouping with letter navigation\n- Real-time search across terms and definitions\n- Clickable related terms\n- Responsive design\n- Dark mode support\n\n**Add to navigation:**\n\nTo add the glossary to your navbar, update your `docusaurus.config.js`:\n\n```javascript\nmodule.exports = {\n  themeConfig: {\n    navbar: {\n      items: [\n        { to: '/glossary', label: 'Glossary', position: 'left' },\n        // ... other items\n      ],\n    },\n  },\n};\n```\n\n## Configuration Options\n\n| Option         | Type   | Default                    | Description                                           |\n| -------------- | ------ | -------------------------- | ----------------------------------------------------- |\n| `glossaryPath` | string | `'glossary/glossary.json'` | Path to glossary JSON file relative to site directory |\n| `routePath`    | string | `'/glossary'`              | URL path for glossary page                            |\n\n## Customization\n\n### Styling\n\nThe plugin uses CSS modules for styling. You can override styles by:\n\n1. Creating custom CSS in your site's `src/css/custom.css`:\n\n```css\n/* Override glossary term styles */\n.glossaryTermWrapper .glossaryTerm {\n  border-bottom-color: #your-color;\n}\n\n/* Override tooltip styles */\n.glossaryTermWrapper .tooltip {\n  background: #your-background;\n}\n```\n\n2. For advanced customization, you can swizzle the components:\n\n```bash\nnpm run swizzle docusaurus-plugin-glossary GlossaryPage -- --wrap\nnpm run swizzle docusaurus-plugin-glossary GlossaryTerm -- --wrap\n```\n\n### Adding to Navbar\n\nTo add the glossary to your navbar, update your `docusaurus.config.js`:\n\n```javascript\nthemeConfig: {\n  navbar: {\n    items: [\n      {to: '/glossary', label: 'Glossary', position: 'left'},\n      // ... other items\n    ],\n  },\n}\n```\n\n## Examples\n\nSee the [Usage Guide](#usage-guide) section above for complete examples. Here are additional examples:\n\n### Complete Glossary Example\n\n```json\n{\n  \"description\": \"Technical terms used in our documentation\",\n  \"terms\": [\n    {\n      \"term\": \"API\",\n      \"abbreviation\": \"Application Programming Interface\",\n      \"definition\": \"A set of rules and protocols that allows different software applications to communicate with each other.\",\n      \"relatedTerms\": [\"REST\", \"GraphQL\", \"Webhook\"]\n    },\n    {\n      \"term\": \"REST\",\n      \"abbreviation\": \"Representational State Transfer\",\n      \"definition\": \"An architectural style for designing networked applications.\",\n      \"relatedTerms\": [\"API\", \"HTTP\"]\n    },\n    {\n      \"term\": \"Webhook\",\n      \"definition\": \"An HTTP callback that occurs when something happens; a simple event-notification via HTTP POST.\",\n      \"relatedTerms\": [\"API\", \"HTTP\"]\n    }\n  ]\n}\n```\n\n### Writing Content with Automatic Detection\n\n```markdown\n---\ntitle: API Documentation\n---\n\n# Getting Started with Our API\n\nOur API uses RESTful principles to provide a simple and consistent interface.\nWebhooks are supported for real-time event notifications.\n```\n\nThe terms \"API\", \"RESTful\", and \"Webhooks\" will automatically be detected and linked if they're defined in your glossary.\n\n### Using the Component in MDX\n\n```mdx\n---\ntitle: API Documentation\n---\n\nimport GlossaryTerm from '@theme/GlossaryTerm';\n\n# Getting Started with Our API\n\nOur \u003cGlossaryTerm term=\"API\" /\u003e\nuses \u003cGlossaryTerm term=\"REST\"\u003eRESTful\u003c/GlossaryTerm\u003e\nprinciples to provide a simple and consistent interface.\n```\n\n## Development\n\nThis project is written in TypeScript and compiles to JavaScript. The source files are in `src/` and the compiled output goes to `dist/`.\n\n### File Structure\n\n```\ndocusaurus-plugin-glossary/\n├── src/\n│   ├── index.ts               # Main plugin entry point (TypeScript)\n│   ├── client/\n│   │   └── index.js           # Client module for runtime initialization\n│   ├── components/\n│   │   ├── GlossaryPage.js    # Glossary page component\n│   │   ├── GlossaryPage.module.css\n│   │   └── GlossaryPage.test.js\n│   ├── remark/\n│   │   └── glossary-terms.js  # Remark plugin for automatic term detection\n│   └── theme/\n│       └── GlossaryTerm/\n│           ├── index.js       # Term component\n│           ├── styles.module.css\n│           └── index.test.js\n├── dist/                      # Compiled output (generated by build)\n│   ├── index.js               # Main plugin file (compiled from src/index.ts)\n│   ├── client/                # Copied from src/client/\n│   ├── components/            # Copied from src/components/\n│   ├── remark/                # Copied from src/remark/\n│   └── theme/                 # Copied from src/theme/\n├── __tests__/\n│   └── plugin.test.js         # Plugin lifecycle tests\n├── examples/\n│   └── docusaurus-v3/         # Example Docusaurus site\n├── scripts/\n│   ├── build.js               # Build script (TypeScript + copy files)\n│   ├── watch.js               # Watch script for development\n│   └── ...\n└── package.json\n```\n\n### Building\n\nThe project uses TypeScript for the main plugin entry point (`src/index.ts`) and JavaScript for components. To build:\n\n```bash\nnpm run build\n```\n\nThis will:\n\n1. Compile TypeScript (`src/index.ts`) to JavaScript (`dist/index.js`)\n2. Copy JavaScript, CSS, and test files from `src/` to `dist/`\n\nFor development, use:\n\n```bash\nnpm run watch\n```\n\nThis watches for changes and automatically rebuilds.\n\n### Plugin Lifecycle\n\nThe plugin follows Docusaurus plugin lifecycle hooks:\n\n1. **getClientModules**: Returns client modules that load automatically on every page (provides runtime initialization)\n2. **loadContent**: Reads glossary JSON file from the configured path\n3. **contentLoaded**: Creates data files for components and remark plugin, adds glossary page route\n4. **getThemePath**: Exposes theme components (`GlossaryTerm`)\n5. **getPathsToWatch**: Watches glossary file for changes during development\n6. **postBuild**: Optional post-build hook for additional processing\n\n### Remark Plugin\n\nThe remark plugin (`remark/glossary-terms.js`) automatically detects glossary terms in markdown files and transforms them at build time. It:\n\n- Scans text nodes for glossary terms (case-insensitive, whole word matching)\n- Replaces matching terms with `\u003cGlossaryTerm\u003e` MDX components\n- Automatically injects the necessary import statement (`import GlossaryTerm from '@theme/GlossaryTerm';`)\n- Skips terms inside code blocks, links, or existing MDX components\n- Respects word boundaries to avoid partial matches\n- Handles plural forms (e.g., \"API\" matches \"APIs\")\n\n## Troubleshooting\n\n### Glossary page returns 404\n\n- Ensure the plugin is properly configured in `docusaurus.config.js`\n- Check that the `routePath` doesn't conflict with existing routes\n- Run `npm run clear` to clear Docusaurus cache\n\n### Glossary terms not showing\n\n- Verify `glossary/glossary.json` exists at the correct path\n- Check JSON syntax is valid\n- Ensure `terms` array is properly formatted\n\n### GlossaryTerm component not found\n\n- Make sure you're importing from `@theme/GlossaryTerm`\n- Try clearing cache with `npm run clear`\n- Restart dev server\n\n### Automatic term detection not working\n\n- **IMPORTANT**: Ensure you have configured the remark plugin in your preset (see Configuration section above)\n- Verify your glossary file exists at the configured `glossaryPath` and contains terms\n- Check that terms in your content match the terms in your glossary (matching is case-insensitive but respects word boundaries)\n- Try clearing cache with `npm run clear` and restarting the dev server\n- Note that terms inside code blocks, links, or MDX components are not processed\n- Make sure you've added the remark plugin to both `docs` and `pages` sections if you want auto-linking in both\n- If you've manually configured the remark plugin, ensure `siteDir` points to the correct Docusaurus site directory\n\n### Styles not applying\n\n- Check for CSS conflicts in your custom CSS\n- Ensure CSS modules are loading correctly\n- Try clearing cache and rebuilding\n\n## License\n\nMIT\n\n## Contributing\n\nContributions are welcome! Please see our [Contributing Guide](CONTRIBUTING.md) for details on how to get started.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history and release notes.\n\n## Credits\n\nBuilt for Docusaurus v3.x\n\n## Technical Details\n\n- **Language**: TypeScript (main plugin) + JavaScript (components)\n- **Build System**: TypeScript compiler + custom build scripts\n- **Package Entry Point**: `dist/index.js` (compiled from `src/index.ts`)\n- **Exports**: Main plugin, remark plugin via package.json exports field\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcclowes%2Fdocusaurus-plugin-glossary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcclowes%2Fdocusaurus-plugin-glossary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcclowes%2Fdocusaurus-plugin-glossary/lists"}