Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/CONTRIBUTING.md
13371 views

Contributing to Built-In Extensions

This directory contains built-in extensions that ship with VS Code.

Basic Structure

A typical TypeScript-based built-in extension has the following structure:

  • package.json: extension manifest.

  • src/: Main directory for TypeScript source code.

  • tsconfig.json: primary TypeScript config. This should inherit from tsconfig.base.json.

  • esbuild.mts: esbuild build script used for production builds.

  • .vscodeignore: Ignore file list. You can copy this from an existing extension.

TypeScript-based extensions have the following output structure:

  • out: Output directory for development builds

  • dist: Output directory for production builds.

Enabling an Extension in the Browser

By default extensions will only target desktop. To enable an extension in browsers as well:

  • Add a "browser" entry in package.json pointing to the browser bundle (for example "./dist/browser/extension").

  • Add tsconfig.browser.json that typechecks only browser-safe sources.

  • Add an esbuild.browser.mts file. This should set platform: 'browser'.

Make sure the browser build of the extension only uses browser-safe APIs. If an extension needs different behavior between desktop and web, you can create distinct entrypoints for each target:

  • src/extension.ts: Desktop entrypoint.

  • src/extension.browser.ts: Browser entrypoint. Make sure esbuild.browser.mts builds this and that tsconfig.browser.json targets it.