プラットフォーム別パス
同じ設定ファイルをOS別に異なるパスで管理する方法。
ほとんどの設定ファイルは、OSによって異なるパスに保存されます。
例えばVS Codeの設定は、Linuxでは~/.config/Code/User/に、
macOSでは~/Library/Application Support/Code/User/にあります。dotweaveは
manifest.jsoncのプラットフォーム別パスオブジェクトでこの違いを吸収します。
プラットフォームキー
Section titled “プラットフォームキー”manifest.jsoncのすべてのパスフィールドは、単純な文字列か、
1つ以上のプラットフォームキーを持つオブジェクトのどちらかで記述できます:
| キー | 対象 |
|---|---|
linux | ネイティブLinux |
mac | macOS |
win | Windows |
wsl | Windows Subsystem for Linux |
default | 明示的にリストされていないプラットフォーム |
パス解決の仕組み
Section titled “パス解決の仕組み”dotweaveがパスを読み取る際、以下の優先順位で最適なマッチを選びます:
- 完全一致のプラットフォームキー — 対象のOSに専用のエントリがあれば、それが使われます。
- フォールバック —
wslキーがない場合、wslはlinuxにフォールバックします。 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"}編集のヒント
Section titled “編集のヒント”manifest.jsoncを手動で編集して、プラットフォームキーの追加や調整がいつでもできます。dotweave trackはまず手早く始めるのに便利です — 現在のプラットフォームのパスがdefaultとして記録され、後から他のプラットフォームを追加できます。- pushする前に
dotweave statusで、現在のマシンでパスが正しく解決されているか確認しましょう。