# Windows의 VS Code 용량, 캐시와 확장과 남는 상태

VS Code에는 확장, 캐시, 로그, 작업 영역 상태, 확장이 소유한 데이터가 쌓입니다. `Code` 폴더 전체를 지우면 캐시와 함께 설정도 초기화될 수 있습니다. 다시 만들 수 있는 내용과, 남겨야 하는 개발 환경을 나눕니다. 편집이 느리면 저장소 정리를 해결로 보기 전에, 일하고 있는 확장을 찾습니다.

## 프로그램 파일, 확장, 사용자 데이터를 구분합니다

표준 Windows 설치에서 프로그램 경로는 설치 프로그램에 따라 다르고, 확장은 기본적으로 `%USERPROFILE%\.vscode\extensions`에 있으며, 사용자 데이터는 보통 `%APPDATA%\Code`에 있습니다. Insiders, 휴대용 모드, 사용자 지정 `--user-data-dir`이나 `--extensions-dir` 경로는 따로 확인합니다.

| 내용 | 용도 | 남길지에 대한 결정 |
| --- | --- | --- |
| 설치된 확장 | 편집, 디버깅, 언어 기능 | 쓰는 도구와 그 설치 출처를 유지 |
| 설정, 단축키, 코드 조각 | 구성한 작업 흐름 | 복구 가능한 구성을 내보내고 확인 |
| 작업 영역과 확장 상태 | 프로젝트 상태와 지속되는 확장 데이터 | 불확실한 내용은 유지. 확장 내보내기 안내를 따름 |
| 다운로드/런타임 캐시와 로그 | 재사용 다운로드, 생성 결과, 진단 | 사용 중인 내용과 조사에 필요한 로그를 보호 |

[확장 참고](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace)에 기본값이 있고, [CLI 참고](https://code.visualstudio.com/docs/configure/command-line)는 사용자 지정 디렉터리와 프로필을 설명합니다. 프로젝트의 `.vscode` 디렉터리는 또 다른 범위이며, 대체로 프로젝트 구성을 담습니다. 이름이 같다고 사용자 확장 폴더가 되지는 않습니다.

## 현재 구성을 기록합니다

확인한 설치의 CLI를 사용합니다. 이 명령은 버전이 있는 확장 목록을 보여주고, 파일을 지우지 않은 채 프로세스 진단을 보고합니다.

```powershell
code --list-extensions --show-versions
code --status
```

확장 목록은 목록이지, 확장 바이너리, 계정 상태, 작업 데이터의 복사본이 아닙니다. 프로필은 작업 흐름을 위한 설정과 확장 선택을 묶습니다. `settings.json` 파일 하나 이상이 아닙니다. 프로필이 여러 개면 현재 프로필을 확인하고, 필요하면 문서화된 프로필 옵션을 사용합니다. 기본 목록이 모든 프로필의 목록은 아닙니다.

관련 설정, 단축키, 코드 조각, 확장 선택은 [프로필](https://code.visualstudio.com/docs/configure/profiles)로 내보냅니다. 내보내기를 확인합니다. 프로젝트 파일과 확장이 소유한 내용은 여전히 각자의 백업이 필요합니다.

## 제거를 결정하기 전에 비활성화합니다

프로젝트에서 재현되는 지연이면, 의심되는 확장에 비활성화(작업 영역)를 고르고, 요청되면 확장을 다시 시작한 뒤 같은 동작을 반복합니다. 한 번에 확장 하나만 바꾸고 진단과 응답을 비교합니다. 더 이상 필요 없다고 정한 뒤에 관리 메뉴로 제거합니다.

비활성화는 설치된 파일을 남기므로, 설치 공간을 되돌리지 않은 채 동작을 시험합니다. [확장 관리](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace)는 작업 영역/전역 비활성화, 제거, 활성화를 구분합니다. 디버깅, 언어 지원, 서식이 그 확장에 아직 의존하는지도 확인합니다.

로컬 Windows, WSL, 개발 컨테이너 환경은 확장 설치가 따로 있을 수 있습니다. 확장 보기에서 위치를 확인합니다. 로컬 Windows 복사본을 지웠다고 원격이 제거된 것은 아닙니다.

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-vscode-storage-windows-en-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-vscode-storage-windows-en.webp" width="1360" height="454" loading="lazy" alt="VS Code 데이터에는 주인이 다릅니다">
  </picture>
  <figcaption>확장 상태에는 남겨 둔 작업이 있을 수 있습니다. 확장을 비활성화하면 설치 파일은 둔 채 동작을 시험합니다.</figcaption>
</figure>

## 지속되는 확장 상태는 일반 캐시가 아닙니다

[ExtensionContext API](https://code.visualstudio.com/api/references/vscode-api#ExtensionContext)는 확장이 전역 상태와 작업 영역별 상태를 저장하게 합니다. 의미는 확장이 정합니다. 인덱스, 기록, 세션, 그 밖의 남겨 둔 내용일 수 있습니다. 큰 `User\globalStorage`나 `User\workspaceStorage` 항목은 이름을 가리지 않고 지우지 말고, 주인을 조사합니다.

[완전 제거 안내](https://code.visualstudio.com/docs/setup/uninstall)는 사용자 데이터 제거를 초기화로 다룹니다. 그것은 환경을 바꾸므로 일상적인 캐시 정리로 제시하지 않습니다. 의도적인 초기화 전에 복구를 내보내고 확인하고, 데이터를 공유할 수 있는 다른 설치도 확인합니다.

## 확장이 다시 나타나면 동기화와 프로필을 확인합니다

[설정 동기화](https://code.visualstudio.com/docs/configure/settings-sync)는 확장 목록, 사용 설정, 선택한 프로필 데이터를 동기화할 수 있습니다. 병합하거나 다른 컴퓨터를 쓴 뒤에 확장이 다시 나타나면 동기화된 데이터와 활성 프로필을 확인합니다. 동기화가 모든 원격 확장이나 비공개 확장 파일을 다루지는 않으므로, 켠다고 개발 환경 전체의 백업이 되지는 않습니다.

Windows용 Mole은 Cache, CachedData, 확장 다운로드 캐시 같은 특정 VS Code 위치를 알아보며, 해당 런타임 캐시에는 프로세스 보호가 있습니다. 그 범위가 사용자 데이터 폴더 전체를 지워도 된다는 허가는 아닙니다. 편집기를 저장하고 정상적으로 종료한 뒤, 필요한 진단 로그는 남기고 원래 프로젝트를 다시 엽니다. 원래 빌드나 편집 작업을 반복하기 전에 설정, 디버깅, 터미널, 필요한 확장을 확인합니다.

언어 패키지 캐시는 [캐시와 프로젝트 의존성](/ko/windows/blog/windows-developer-caches)을 읽습니다. 컨테이너 환경과 볼륨은 [Docker/WSL 저장소 안내](/ko/windows/blog/docker-wsl-disk-space-windows)를 읽습니다.


Canonical: https://mole.fit/ko/windows/blog/vscode-storage-windows
