Docusaurus EditorのAPI仕様とコマンドリファレンスです。
コマンド |
ID |
説明 |
Docusaurus: Show TreeView |
docusaurusEditor.showTreeView |
TreeViewパネルを表示 |
Docusaurus: Refresh TreeView |
docusaurusEditor.refreshTreeView |
TreeViewを再読み込み |
Docusaurus: New Document |
docusaurusEditor.newDocument |
新規ドキュメントを作成 |
Docusaurus: Open Preview |
docusaurusEditor.openPreview |
Markdownプレビューを開く |
コマンド |
ID |
説明 |
Docusaurus: Git Commit |
docusaurusEditor.gitCommit |
変更をコミット |
Docusaurus: Git Push |
docusaurusEditor.gitPush |
リモートにプッシュ |
Docusaurus: Create Pull Request |
docusaurusEditor.createPullRequest |
プルリクエストを作成 |
Docusaurus: Git History |
docusaurusEditor.gitHistory |
ファイルの変更履歴を表示 |
コマンド |
ID |
説明 |
Docusaurus: Run Diagnostics |
docusaurusEditor.runDiagnostics |
システム診断を実行 |
Docusaurus: Fix Position Conflicts |
docusaurusEditor.fixPositionConflicts |
sidebar_positionの競合を解決 |
Docusaurus: Validate Project |
docusaurusEditor.validateProject |
プロジェクト構造を検証 |
Docusaurus: Clear Cache |
docusaurusEditor.clearCache |
キャッシュをクリア |
interface TreeViewConfig {
/** TreeViewの自動更新を有効にする */
autoRefresh: boolean;
/** ファイルサイズを表示する */
showFileSize: boolean;
/** 最終更新日時を表示する */
showLastModified: boolean;
/** ソート方法 */
sortBy: 'position' | 'name' | 'date' | 'size';
/** フォルダをファイルより上に表示する */
groupFolders: boolean;
/** 除外パターン */
excludePatterns: string[];
/** 含有パターン */
includePatterns: string[];
}
interface GitConfig {
/** 自動コミットを有効にする */
autoCommit: boolean;
/** コミットメッセージテンプレート */
commitMessageTemplate: string;
/** コミット後に自動プッシュする */
pushAfterCommit: boolean;
/** 自動でプルリクエストを作成する */
createPullRequest: boolean;
/** 自動コミットの遅延時間(ミリ秒) */
autoCommitDelay: number;
/** GitHub設定 */
github: {
enabled: boolean;
token: string;
repository: string;
defaultBranch: string;
};
}
interface NewFileConfig {
/** デフォルトテンプレート */
defaultTemplate: string;
/** 自動位置設定を有効にする */
autoPositioning: boolean;
/** 説明を含める */
includeDescription: boolean;
/** テンプレート定義 */
templates: {
[templateName: string]: {
frontmatter: Record<string, any>;
content: string;
};
};
}
class DocusaurusTreeProvider implements vscode.TreeDataProvider<DocusaurusItem> {
readonly onDidChangeTreeData: vscode.Event<DocusaurusItem | undefined | null | void>;
constructor(private workspaceRoot: string);
getTreeItem(element: DocusaurusItem): vscode.TreeItem;
getChildren(element?: DocusaurusItem): Thenable<DocusaurusItem[]>;
refresh(): void;
}
TreeDragAndDropController
class DocusaurusDragAndDropController implements vscode.TreeDragAndDropController<DocusaurusItem> {
readonly dropMimeTypes: string[];
readonly dragMimeTypes: string[];
handleDrag(source: DocusaurusItem[], dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): void;
handleDrop(target: DocusaurusItem | undefined, dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): Thenable<void>;
}
interface TreeViewEvents {
/** ファイルが選択されたとき */
onFileSelected: (file: DocusaurusFile) => void;
/** ファイルが移動されたとき */
onFileMoved: (file: DocusaurusFile, oldPath: string, newPath: string) => void;
/** 新規ファイルが作成されたとき */
onFileCreated: (file: DocusaurusFile) => void;
/** ファイルが削除されたとき */
onFileDeleted: (filePath: string) => void;
}
interface GitEvents {
/** コミット前 */
onPreCommit: (files: string[]) => Promise<boolean>;
/** コミット後 */
onPostCommit: (commitHash: string) => void;
/** プッシュ前 */
onPrePush: (branch: string) => Promise<boolean>;
/** プッシュ後 */
onPostPush: (branch: string) => void;
}
interface DocusaurusItem {
/** アイテムの種類 */
type: 'file' | 'folder';
/** 表示名 */
label: string;
/** ファイルパス */
path: string;
/** サイドバー位置 */
sidebarPosition?: number;
/** 子アイテム */
children?: DocusaurusItem[];
/** ファイルサイズ(バイト) */
size?: number;
/** 最終更新日時 */
lastModified?: Date;
/** Git状態 */
gitStatus?: 'modified' | 'added' | 'deleted' | 'renamed';
}
interface Frontmatter {
/** ドキュメントタイトル */
title: string;
/** サイドバー位置 */
sidebar_position?: number;
/** 説明文 */
description?: string;
/** タグ */
tags?: string[];
/** カスタムプロパティ */
[key: string]: any;
}
interface TemplateDefinition {
/** テンプレート名 */
name: string;
/** 表示名 */
displayName: string;
/** 説明 */
description: string;
/** フロントマター */
frontmatter: Partial<Frontmatter>;
/** コンテンツテンプレート */
content: string;
/** 変数定義 */
variables?: {
[variableName: string]: {
type: 'string' | 'number' | 'boolean' | 'date';
default?: any;
description?: string;
};
};
}
// extension.ts
export function activate(context: vscode.ExtensionContext) {
const disposable = vscode.commands.registerCommand(
'docusaurusEditor.customCommand',
async (args) => {
// カスタム処理
}
);
context.subscriptions.push(disposable);
}
interface CommandArgs {
/** 対象ファイルパス */
filePath?: string;
/** 追加オプション */
options?: {
silent?: boolean;
force?: boolean;
};
}
interface PreviewWebView {
/** WebViewパネル */
panel: vscode.WebviewPanel;
/** コンテンツ更新 */
updateContent(markdown: string): void;
/** スクロール同期 */
syncScroll(line: number): void;
/** テーマ変更 */
setTheme(theme: 'light' | 'dark'): void;
}
interface WebViewMessage {
command: string;
data?: any;
}
// WebView → Extension
interface WebViewToExtension {
'scroll': { line: number };
'click': { element: string };
'ready': {};
}
// Extension → WebView
interface ExtensionToWebView {
'update': { content: string };
'scroll': { line: number };
'theme': { theme: string };
}
interface DocusaurusPlugin {
/** プラグイン名 */
name: string;
/** バージョン */
version: string;
/** アクティベーション */
activate(context: vscode.ExtensionContext): void;
/** 非アクティベーション */
deactivate(): void;
/** TreeViewアイテムのカスタマイズ */
customizeTreeItem?(item: DocusaurusItem): vscode.TreeItem;
/** コンテキストメニューの拡張 */
contributeContextMenus?(): vscode.Command[];
}
interface HookSystem {
/** フック登録 */
registerHook<T>(name: string, callback: (data: T) => T | Promise<T>): void;
/** フック実行 */
executeHook<T>(name: string, data: T): Promise<T>;
/** フック削除 */
unregisterHook(name: string, callback: Function): void;
}
// 利用可能なフック
type HookNames =
| 'file.beforeCreate'
| 'file.afterCreate'
| 'file.beforeMove'
| 'file.afterMove'
| 'git.beforeCommit'
| 'git.afterCommit';
interface SystemInfo {
/** VS Codeバージョン */
vscodeVersion: string;
/** 拡張機能バージョン */
extensionVersion: string;
/** OS情報 */
os: {
platform: string;
version: string;
architecture: string;
};
/** Node.jsバージョン */
nodeVersion: string;
/** Gitバージョン */
gitVersion?: string;
}
interface ProjectInfo {
/** プロジェクトパス */
path: string;
/** ドキュメント数 */
documentCount: number;
/** フォルダ数 */
folderCount: number;
/** Git リポジトリ情報 */
git?: {
branch: string;
remotes: string[];
status: string;
};
/** Docusaurus設定 */
docusaurusConfig?: any;
}
コード |
説明 |
対処法 |
DOC_001 |
プロジェクトが見つからない |
docsフォルダの存在確認 |
DOC_002 |
権限エラー |
ファイル権限の確認 |
DOC_003 |
Git リポジトリエラー |
Git初期化の確認 |
DOC_004 |
Frontmatter構文エラー |
YAML構文の修正 |
DOC_005 |
テンプレートが見つからない |
テンプレート設定の確認 |
DOC_006 |
ネットワークエラー |
インターネット接続の確認 |
DOC_007 |
設定ファイルエラー |
settings.jsonの構文確認 |
interface PerformanceMetrics {
/** TreeView読み込み時間 */
treeViewLoadTime: number;
/** ファイル解析時間 */
fileParseTime: number;
/** Git操作時間 */
gitOperationTime: number;
/** メモリ使用量 */
memoryUsage: number;
/** キャッシュヒット率 */
cacheHitRate: number;
}
interface OptimizationConfig {
/** 遅延読み込み */
lazyLoading: boolean;
/** キャッシュサイズ */
cacheSize: string;
/** 最大ファイル数 */
maxFiles: number;
/** デバウンス時間 */
debounceTime: number;
}