Skip to content

ワークスペース API

ワークスペース APIは、現在のワークスペースとの相互作用、ファイルとフォルダーの管理、ワークスペースレベルの操作を処理するメソッドを提供します。

概要

ワークスペース APIでは以下のことができます:

  • ワークスペースファイルへのアクセスと変更
  • ファイルシステムの変更の監視
  • ワークスペース設定の管理
  • 複数のワークスペースフォルダーの処理
  • ワークスペース全体の操作の実行

基本的な使用方法

ワークスペース情報の取得

typescript
import { TraeAPI } from '@trae/api';

// ワークスペースフォルダーを取得
const workspaceFolders = TraeAPI.workspace.workspaceFolders;
if (workspaceFolders) {
  console.log('ワークスペースフォルダー:', workspaceFolders.map(f => f.uri.fsPath));
}

// ワークスペース名を取得
const workspaceName = TraeAPI.workspace.name;
console.log('ワークスペース名:', workspaceName);

ファイル操作

typescript
// ファイルコンテンツを読み取り
const fileUri = TraeAPI.Uri.file('/path/to/file.txt');
const content = await TraeAPI.workspace.fs.readFile(fileUri);
const text = Buffer.from(content).toString('utf8');

// ファイルコンテンツを書き込み
const newContent = Buffer.from('Hello, World!', 'utf8');
await TraeAPI.workspace.fs.writeFile(fileUri, newContent);

// ファイルが存在するかチェック
const exists = await TraeAPI.workspace.fs.stat(fileUri)
  .then(() => true)
  .catch(() => false);

ワークスペースイベント

typescript
// ファイル変更を監視
TraeAPI.workspace.onDidChangeTextDocument((event) => {
  console.log('ドキュメントが変更されました:', event.document.fileName);
  console.log('変更内容:', event.contentChanges);
});

// ファイル作成/削除を監視
TraeAPI.workspace.onDidCreateFiles((event) => {
  console.log('ファイルが作成されました:', event.files.map(f => f.fsPath));
});

TraeAPI.workspace.onDidDeleteFiles((event) => {
  console.log('ファイルが削除されました:', event.files.map(f => f.fsPath));
});

APIリファレンス

プロパティ

workspaceFolders

ワークスペースフォルダーの配列を返します。

typescript
readonly workspaceFolders: readonly WorkspaceFolder[] | undefined;

name

ワークスペースの名前。

typescript
readonly name: string | undefined;

メソッド

openTextDocument()

テキストドキュメントを開きます。

typescript
openTextDocument(uri: Uri): Thenable<TextDocument>;
openTextDocument(fileName: string): Thenable<TextDocument>;

saveAll()

すべての未保存ファイルを保存します。

typescript
saveAll(includeUntitled?: boolean): Thenable<boolean>;

findFiles()

ワークスペース内のファイルを検索します。

typescript
findFiles(
  include: GlobPattern,
  exclude?: GlobPattern,
  maxResults?: number
): Thenable<Uri[]>;

ファイルシステム API

fs.readFile()

ファイルの全内容を読み取ります。

typescript
readFile(uri: Uri): Thenable<Uint8Array>;

fs.writeFile()

ファイルにデータを書き込みます。

typescript
writeFile(uri: Uri, content: Uint8Array): Thenable<void>;

fs.createDirectory()

新しいディレクトリを作成します。

typescript
createDirectory(uri: Uri): Thenable<void>;

使用例

プロジェクトファイルスキャナー

typescript
async function scanProjectFiles() {
  const files = await TraeAPI.workspace.findFiles('**/*.{js,ts,jsx,tsx}');
  
  for (const file of files) {
    const document = await TraeAPI.workspace.openTextDocument(file);
    console.log(`ファイル: ${file.fsPath}, 行数: ${document.lineCount}`);
  }
}

ワークスペース設定

typescript
// ワークスペース設定を取得
const config = TraeAPI.workspace.getConfiguration('myExtension');
const setting = config.get<string>('mySetting', 'defaultValue');

// 設定を更新
await config.update('mySetting', 'newValue', TraeAPI.ConfigurationTarget.Workspace);

ファイルウォッチャー

typescript
const watcher = TraeAPI.workspace.createFileSystemWatcher('**/*.json');

watcher.onDidCreate((uri) => {
  console.log('JSONファイルが作成されました:', uri.fsPath);
});

watcher.onDidChange((uri) => {
  console.log('JSONファイルが変更されました:', uri.fsPath);
});

watcher.onDidDelete((uri) => {
  console.log('JSONファイルが削除されました:', uri.fsPath);
});

ベストプラクティス

  1. 操作を実行する前に常にワークスペースの存在を確認する
  2. ファイルシステム操作には適切なエラーハンドリングを使用する
  3. 不要になったウォッチャーは適切に破棄する
  4. 可能な限り相対パスを使用してポータビリティを確保する
  5. ユーザー設定とワークスペース設定を尊重する

関連API

究極の AI 駆動 IDE 学習ガイド