docusaurus-plugin-dev
Helps develop and build Docusaurus plugins using this starter template
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Helps develop and build Docusaurus plugins using this starter template
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | docusaurus-plugin-dev |
| description | Helps develop and build Docusaurus plugins using this starter template |
// src/plugin.ts - Register client module with getClientModules()
export default function myPlugin(context, options): Plugin {
return {
name: 'my-plugin',
getClientModules() {
return [require.resolve('./client')];
},
};
}
// src/client/index.ts - Enhance DOM automatically on every page
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
export default (function () {
if (!ExecutionEnvironment.canUseDOM) return null;
return {
onRouteUpdate({ location }) {
// Runs on every route change - enhance elements automatically
document.querySelectorAll('.markdown img').forEach(img => {
img.style.cursor = 'zoom-in';
img.addEventListener('click', () => console.log('Image clicked'));
});
},
};
})();
getClientModules() run on every page automatically—no manual imports needed in content filesExecutionEnvironment.canUseDOM before using browser APIs to prevent SSR errorsonRouteUpdate for DOM manipulation that needs to reinitialize on every SPA navigation.markdown img, pre code) and enhance themsrc/plugin.ts, browser code in src/client/ - never mix themUse onRouteUpdate with DOM selectors to enhance elements automatically without imports.
Initialize third-party libraries (medium-zoom, highlight.js) and reinitialize on route changes.
Attach keyboard shortcuts or scroll handlers once, persist across routes using initialization flags.
Pass configuration from plugin to client via setGlobalData or inline during build.
For detailed documentation:
Plugin Hooks (src/plugin.ts):
loadContent() - Load/process data at build timecontentLoaded() - Inject global data with setGlobalData() or add routesgetClientModules() - Return array of client module paths (runs in browser)Client Lifecycle (src/client/index.ts):
onRouteUpdate() - During navigation (use for DOM manipulation)onRouteDidUpdate() - After navigation completes (use for analytics)Critical Guardrails:
fs, path) in src/client/*ExecutionEnvironment.canUseDOM checksetTimeout(() => {}, 0) if DOM elements not immediately available