layout | parent | title | nav_order | description |
---|---|---|---|---|
default |
References |
Activation Events |
3 |
활성화 이벤트 는 package.json
Extension Manifest의 activationEvents
부분에서 작성되는 JSON 선언의 모음 입니다. 익스텐션은 활성화 이벤트 가 일어날때 활성화 됩니다. 아래는 모든 사용 가능한 활성화 이벤트 의 목록입니다:
또한 [package.json
extension manifest]의 모든 필드에 대하여 참조할 수 있는 내용을 제공합니다.
특정 언어로 해석되는 파일이 열릴때마다 이 활성화 이벤트가 발생하고, 연관된 익스텐션이 활성화 됩니다.
...
"activationEvents": [
"onLanguage:python"
]
...
onLanguage
이벤트는 언어 식별자 값을 입력받습니다.
activationEvents
어레이에서 별도의 onLanguage
항목으로 여러 언어들을 선언 할 수 있습니다.
"activationEvents": [
"onLanguage:json",
"onLanguage:markdown",
"onLanguage:typescript"
]
...
커맨드가 실행 될때마다 이 활성화 이벤트는 실행되고 관련된 익스텐션이 활성화 될 것입니다:
...
"activationEvents": [
"onCommand:extension.sayHello"
]
...
디버그 세션이 시작되기전에 이 활성화 이벤트가 실행되고 관련된 익스텐션이 활성화 될 것입니다:
...
"activationEvents": [
"onDebug"
]
...
다음은 2개의 더욱 세밀한 onDebug
활성화 이벤트 입니다:
onDebugInitialConfigurations
는DebugConfigurationProvider
의provideDebugConfigurations
메소드가 호출 되기 직전에 발생합니다.onDebugResolve:type
는 특정한 타입에 대한DebugConfigurationProvider
의resolveDebugConfiguration
메소드가 호출 되기 직전에 발생합니다.
기본 원칙: 디버그 익스텐션 익스텐션이 가벼운 경우에는, onDebug
를 사용하십시오. 만약 무거운 경우, DebugConfigurationProvider
가 대응하는 메소드인 provideDebugConfigurations
혹은 resolveDebugConfiguration
을 사용하는 지에 따라 onDebugInitialConfigurations
나 onDebugResolve
를 사용하십시오. 이러한 메소드에 대한 더 자세한 내용은 Using a DebugConfigurationProvider를 참조하십시오.
폴더가 열리고, 해당 폴더가 최소 1개 이상의 glob 패턴과 일치하는 파일을 포함하는 경우 이 활성화 이벤트가 실행되고 관련된 익스텐션이 활성화 될 것입니다.
...
"activationEvents": [
"workspaceContains:**/.editorconfig"
]
...
특정 scheme 의 파일이나 폴더를 읽을 때마다 이 활성화 이벤트가 실행되고 관련있는 익스텐션이 활성화 될 것입니다. 이는 일반적으로 file
-체계 이지만, 커스텀 파일 시스템 제공자를 사용하여 ftp
나 ssh
같은 더 많은 체계를 허용 할 수 있습니다.
...
"activationEvents": [
"onFileSystem:sftp"
]
...
VS Code 사이드바에서 지정된 id의 뷰가 확장 될 때 마다 이 활성화 이벤트가 실행되고 관련된 익스텐션이 활성화 될 것입니다. (빌트인 뷰의 예시로는 익스텐션이나 소스 컨트롤이 있습니다)
아래의 활성화 이벤트는 nodeDependencies
id를 가진 뷰가 보여질때마다 실행 될 것입니다:
...
"activationEvents": [
"onView:nodeDependencies"
]
...
익스텐션에 해당하는 전-시스템 Uri가 열릴때마다, 이 활성화 이벤트가 실행되고 관련있는 익스텐션이 활성화 될 것입니다. Uri 의 형태는 vscode
나 vscode-insiders
로 고정되어 있습니다. Uri의 권한은 반드시 익스텐션의 식별자 여야합니다. Uri의 나머지 부분은 임의적입니다.
...
"activationEvents": [
"onUri"
]
...
만약 vscode.git
익스텐션이 onUri
를 활성화 이벤트로 정의하는 경우, 다음 Uri가 열릴때마다 활성화 될 것입니다:
vscode://vscode.git/init
vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git
vscode-insiders://vscode.git/init
(for VS Code Insiders)
VS Code가 일치하는 viewType
으로 웹 뷰를 복원할때마다 이 활성화 이벤트가 실행되고 관련있는 익스텐션이 활성화 될 것입니다.
예를 들어, 아래와 같은 onWebViewPanel 선언은:
"activationEvents": [
...,
"onWebviewPanel:catCoding"
]
VS Code viewType : catCoding
을 사용하여 웹 뷰를 복원 할때마다 익스텐션이 활성화 되게 할 것입니다. viewType은 window.createWebviewPanel
호출에서 설정되며 익스텐션을 처음 활성화 하고, 웹 뷰를 생성하기 위하여 다른 활성화 이벤트 (예시로, onCommand)가 있어야 합니다.
*
활성화 이벤트는 VS Code 가 시작 될 때 실행되고 관련된 익스텐션이 활성화 될 것입니다. 최상의 사용자 경험을 위해, 익스텐션에서 다른 활성화 이벤트 조합이 작동하지 않는 경우에만 이 활성화 이벤트를 사용하십시오.
...
"activationEvents": [
"*"
]
...
주의: 익스텐션은 여러개의 활성화 이벤트를 수신 할 수 있으므로,
"*"
를 수신하는 것이 좋습니다.
주의: 익스텐션은 반드시 메인 모듈에서
activate()
기능을 내보내야하며 이는 VS Code 에 의해 지정된 활성화 이벤트가 실행 되었을 경우에 한번만 실행 될 것입니다. 또한 익스텐션은 메인 모듈에서deactivate()
를 내보내야 하며 이를 통해 VS Code가 종료되었을때 정리 작업을 수행해야 합니다. 익스텐션은 정리작업이 비동기방식으로 실행 되는 경우 반드시deactivate()
로 부터 프로미스를 반환해야합니다. 정리가 동기방식으로 실행되는 경우 익스텐션은deactivate()
에서undefined
를 반환 할 수 있습니다.