이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

확장 프로그램 호스트

Extension Host는 확장을 실행하는 역할을 합니다.

Extension Host 구성

VS Code의 구성에 따라 여러 Extension Host가 다양한 런타임으로, 다른 위치에서 실행됩니다.

  • local – 사용자 인터페이스와 동일한 머신에서 로컬로 실행되는 Node.js 확장 호스트입니다.
  • web – 사용자 인터페이스와 동일한 머신에서 브라우저 또는 로컬에서 실행되는 웹 확장 호스트입니다.
  • remote – 컨테이너 또는 원격 위치에서 원격으로 실행되는 Node.js 확장 호스트입니다.

다음 표는 VS Code의 다양한 구성에서 사용 가능한 확장 호스트를 보여줍니다.

구성 로컬 확장 호스트 웹 확장 호스트 원격 확장 호스트
데스크톱용 VS Code ✔️ ✔️
원격 VS Code (컨테이너, SSH, WSL, GitHub Codespace, Tunnel) ✔️ ✔️ ✔️
웹용 VS Code (vscode.dev, github.dev) ✔️
Codespaces용 웹 VS Code ✔️ ✔️

Extension Host 런타임

  • Node.js - 확장은 Node.js 런타임에서 실행됩니다. 로컬 및 원격 확장 호스트에서 사용됩니다. 확장이 실행되려면 main 항목 파일이 필요합니다.
  • 브라우저 - 확장은 Browser WebWorker 런타임에서 실행됩니다. 웹 확장 호스트에서 사용됩니다. 확장이 실행되려면 browser 항목 파일이 필요합니다. 자세한 내용은 웹 확장 가이드를 참조하세요.

선호 확장 위치

확장이 로드되는 확장 호스트는 다음을 기반으로 합니다.

  • VS Code 구성에서 제공하는 사용 가능한 확장 호스트.
  • 확장의 기능: Node.js 및/또는 웹에서 실행될 수 있는지, 또는 표시되지 않은 경우 어떤 기여를 제공하는지?
  • 확장이 설치된 위치: 로컬 머신, 원격 머신 또는 둘 다.
  • 확장이 선호하는 위치: extensionKind 속성.

extensionKind확장 매니페스트의 속성입니다. 확장이 선호하는 실행 위치를 지정할 수 있습니다. 워크스페이스가 있는 머신(workspace) 또는 사용자 인터페이스(ui)일 수 있습니다. 확장이 둘 다에서 실행될 수 있다면 선호 순서를 지정할 수 있습니다.

  • "extensionKind": ["workspace"] — 확장이 워크스페이스 콘텐츠에 액세스해야 하므로 워크스페이스가 있는 위치에서 실행되어야 함을 나타냅니다. 이는 로컬 머신, 원격 머신 또는 Codespace일 수 있습니다. 대부분의 확장이 이 범주에 속합니다.
  • "extensionKind": ["ui", "workspace"] — 확장은 UI 확장으로 실행되는 것을 **선호**하지만 로컬 에셋, 장치 또는 기능에 대한 엄격한 요구 사항은 없습니다. VS Code를 사용할 때 확장은 로컬에 존재하는 경우 VS Code의 로컬 확장 호스트에서 실행되며 사용자가 원격에 확장을 설치할 필요가 없습니다. 그렇지 않으면 확장은 존재하는 경우 VS Code의 워크스페이스 확장 호스트에서 실행됩니다. Codespaces를 사용하는 웹용 VS Code를 사용할 때는 항상 원격 확장 호스트에서 실행됩니다(로컬 확장 호스트를 사용할 수 없기 때문).
  • "extensionKind": ["workspace", "ui"] — 확장은 워크스페이스 확장으로 실행되는 것을 **선호**하지만 워크스페이스 콘텐츠 액세스에 대한 엄격한 요구 사항은 없습니다. VS Code를 사용할 때 확장은 원격 워크스페이스에 존재하는 경우 VS Code의 워크스페이스 확장 호스트에서 실행되며, 그렇지 않으면 로컬에 존재하는 경우 VS Code의 로컬 확장 호스트에서 실행됩니다. Codespaces를 사용하는 웹용 VS Code를 사용할 때는 항상 원격 확장 호스트에서 실행됩니다(로컬 확장 호스트를 사용할 수 없기 때문).
  • "extensionKind": ["ui"] — 확장은 로컬 에셋, 장치 또는 기능에 액세스해야 하거나 낮은 지연 시간이 필요한 경우 UI에 가깝게 실행되어야 **합니다**. Codespaces를 사용하는 웹용 VS Code의 경우 로컬 확장 호스트를 사용할 수 없으므로, 웹 확장도 아닌 경우 이러한 확장은 로드될 수 없습니다. 그러면 웹 확장 호스트에서 로드되지만 웹 워커를 인스턴스화할 수 없다는 제약이 있습니다.

참고: 이전 VS Code 릴리스(<1.40)에서는 확장이 문자열로 단일 위치를 지정할 수 있었지만, 이는 배열로서 여러 위치를 지정하는 방식으로 변경되었습니다.

확장이 Node.js 및 브라우저에서 모두 실행될 수 있는 경우, 사용 가능한 경우 Node.js 확장 호스트가 선택됩니다. 한 가지 예외가 있는데, Codespaces를 사용하는 웹용 VS Code 구성이고 extensionKindui로 설정된 경우, 웹 확장 호스트가 원격 확장 호스트보다 선호됩니다.

확장이 웹 전용인 경우 extensionKind 설정에 관계없이 항상 웹 확장 호스트에서 실행됩니다. 이 경우 extensionKind를 정의하지 않는 것이 좋습니다.

안정성 및 성능

VS Code는 사용자에게 안정적이고 고성능의 편집기를 제공하는 것을 목표로 하며, 오작동하는 확장이 사용자 경험에 영향을 미치지 않도록 합니다. VS Code의 Extension Host는 확장이 다음을 방지합니다.

  • 시작 성능에 영향을 미치는 것
  • UI 작업 속도를 늦추는 것
  • UI를 수정하는 것

추가로, VS Code는 확장이 활성화 이벤트를 선언하고 지연 로드할 수 있도록 합니다. 예를 들어, Markdown 확장 프로그램은 사용자가 Markdown 파일을 열 때만 로드되어야 합니다. 이렇게 하면 확장이 불필요한 CPU 및 메모리를 소비하지 않습니다.

© . This site is unofficial and not affiliated with Microsoft.