コンテンツにスキップ
Dotweave Dotweave v0.39.7

プラットフォーム別パス

同じ設定ファイルをOS別に異なるパスで管理する方法。

ほとんどの設定ファイルは、OSによって異なるパスに保存されます。 例えばVS Codeの設定は、Linuxでは~/.config/Code/User/に、 macOSでは~/Library/Application Support/Code/User/にあります。dotweaveは manifest.jsoncプラットフォーム別パスオブジェクトでこの違いを吸収します。

manifest.jsoncのすべてのパスフィールドは、単純な文字列か、 1つ以上のプラットフォームキーを持つオブジェクトのどちらかで記述できます:

キー対象
linuxネイティブLinux
macmacOS
winWindows
wslWindows Subsystem for Linux
default明示的にリストされていないプラットフォーム

dotweaveがパスを読み取る際、以下の優先順位で最適なマッチを選びます:

  1. 完全一致のプラットフォームキー — 対象のOSに専用のエントリがあれば、それが使われます。
  2. フォールバックwslキーがない場合、wsllinuxにフォールバックします。
  3. default — 他のキーがマッチしない場合に使われます。

いずれも解決できない場合、そのエントリはそのプラットフォームではスキップされます。

localPath — 常にプラットフォームオブジェクト

Section titled “localPath — 常にプラットフォームオブジェクト”

localPathは、マシン上のファイルの場所を示します。OS間で最も異なりやすい フィールドなので、常にプラットフォームオブジェクトとして記述されます:

{
"localPath": {
"default": "~/.config/Code/User/settings.json",
"mac": "~/Library/Application Support/Code/User/settings.json",
"win": "%APPDATA%/Code/User/settings.json"
}
}

repoPath — 通常は共通、ただし異なる場合も

Section titled “repoPath — 通常は共通、ただし異なる場合も”

repoPathはsyncディレクトリ内のパスです。ほとんどの場合、プラットフォーム間で 同じなので、単純な文字列で十分です。異なる場合は、同じプラットフォームオブジェクト形式を 使います:

{
"repoPath": {
"default": "vscode/settings.json",
"win": "vscode-win/settings.json"
}
}

mode — プラットフォーム別の動作

Section titled “mode — プラットフォーム別の動作”

modeもプラットフォームごとに設定できます。特定のOSでしか意味のない設定に 便利です:

{
"mode": {
"default": "copy",
"win": "ignore"
}
}

この設定では、Windows以外のすべてのプラットフォームでファイルが同期され、 Windowsではスキップされます。

Linux、macOS、Windowsで動作するVS Code設定の完全なエントリです:

{
"localPath": {
"default": "~/.config/Code/User/settings.json",
"mac": "~/Library/Application Support/Code/User/settings.json",
"win": "%APPDATA%/Code/User/settings.json"
},
"repoPath": "vscode/settings.json",
"mode": "copy"
}
  • manifest.jsoncを手動で編集して、プラットフォームキーの追加や調整がいつでもできます。
  • dotweave trackはまず手早く始めるのに便利です — 現在のプラットフォームのパスがdefaultとして記録され、後から他のプラットフォームを追加できます。
  • pushする前にdotweave statusで、現在のマシンでパスが正しく解決されているか確認しましょう。