콘텐츠로 이동

플랫폼별 경로

같은 설정 파일을 플랫폼마다 다른 경로로 관리하는 방법

일부 도구는 플랫폼에 따라 설정 파일을 다른 위치에 저장해요. 예를 들어 Neovim의 설정은 Linux와 macOS에서는 ~/.config/nvim이지만, Windows에서는 %APPDATA%\Local\nvim이에요. Devsync는 이런 상황을 위해 manifest.json에서 플랫폼별 localPath 변형을 지원해요.


Linux에서 devsync track ~/.config/nvim을 실행하면 Linux 경로가 항목에 기록돼요. Windows에서는 같은 논리적 항목에 다른 경로가 필요해요. 플랫폼 경로 지원이 없다면 기기마다 별도의 매니페스트 항목을 만들어야 하고, 충돌이 생길 수 있어요.


Devsync는 manifest.json에서 네 가지 플랫폼 키를 지원해요.

플랫폼
winWindows
macmacOS
linuxLinux
wslWindows Subsystem for Linux

wsllinux와 별도의 플랫폼으로 취급돼요. WSL 환경에서 실행된 Devsync는 linux 키가 아닌 wsl 키를 사용해요.


단일 플랫폼 항목은 문자열을 사용해요.

{
"localPath": ".config/nvim",
"mode": "normal",
"profiles": []
}

멀티 플랫폼 항목은 default 키와 플랫폼별 오버라이드가 포함된 객체를 사용해요.

{
"localPath": {
"default": ".config/nvim",
"win": "AppData/Local/nvim",
"wsl": ".config/nvim"
},
"mode": "normal",
"profiles": []
}

push와 pull 시 현재 플랫폼에 맞는 값을 선택하고, 해당 키가 없으면 default로 대체돼요.


devsync track은 현재 플랫폼의 경로를 기록해요. 다른 플랫폼의 경로를 추가하려면 manifest.json을 직접 편집해야 해요.

Terminal window
# Linux/macOS에서
devsync track ~/.config/nvim
# Windows에서
devsync track ~/AppData/Local/nvim

현재 플랫폼의 경로가 문자열로 기록된 항목이 생성돼요.


자주 사용하는 크로스 플랫폼 설정 예시

섹션 제목: “자주 사용하는 크로스 플랫폼 설정 예시”
{
"localPath": {
"default": ".config/nvim",
"win": "AppData/Local/nvim"
},
"mode": "normal",
"profiles": []
}
{
"localPath": {
"default": ".config/Code/User/settings.json",
"mac": "Library/Application Support/Code/User/settings.json",
"win": "AppData/Roaming/Code/User/settings.json"
},
"mode": "normal",
"profiles": []
}
{
"localPath": ".ssh/config",
"mode": "secret",
"profiles": []
}

SSH 설정은 모든 플랫폼에서 ~/.ssh/config이므로 플랫폼 변형이 필요 없어요.