Building the extension
August 27, 2025 ยท View on GitHub
To develop the Quarto VS Code extension, clone the quarto mono-repo, run yarn at top level, then run the yarn dev-vscode command:
yarn # install dependencies
yarn dev-vscode # run development/debug version of extension
Run the extension tests with:
yarn test-vscode # compile the test files and run them with the vscode-test CLI
Install the dev version of the extension in VS Code or Positron with:
yarn install-vscode
yarn install-positron
Debugging the extension
The extension must have been built in dev mode (see the build section). The dev build flag is essential for debugging:
-
It disables minifying and generates source maps from generated JS files to source TS files. The source maps allow you to set breakpoints in our TS files and step through them.
-
It causes the LSP node process to be spawned in debug mode. This allows VS Code or another debugger to connect to the LSP via a special port.
Here is the process:
-
Let
yarn dev-vscoderun in the background somewhere. -
Open the
apps/vscodefolder in VS Code or Positron and go to theRun and debugpane. -
Run the
Run VS Code Extensionto open the dev version of the extension in a new window. -
If you need to set breakpoints in the LSP, you'll have to select the launch configuration
Attach to VS Code LSP serverand run that as well. You should see your LSP breakpoints bind (go from grayed out to red dots) as soon as the debugger is attached to the LSP.Note that if you close the dev window and stop the extension debugging session, you'll have to manually close the LSP debugging session.
Releasing and Publishing
You can find the releases of this repository here.
The VSCode extension is published on the Microsoft Visual Studio Marketplace as well as the Open VSX Registry.
Here are the steps for making a release and publishing:
- Note the version in
apps/vscode/package.json. - Check that the topmost version in
apps/vscode/CHANGELOG.mdmatches the version you saw inapps/vscode/package.json. Next to that version number, it should say "(Unreleased)". Replace "(Unreleased)" with "(Release on YYYY-MM-DD)" with the current date filled in. Please also ensure that the changelog includes descriptions of all the changes in the release. example PR. - Open the "Publish VSCode Extension to Marketplaces" workflow page and run the workflow, after checking the box to confirm that the version and changelog are up-to-date. example workflow run.
- If the action was successful, then it will have published the extension to both marketplaces and also created a new release. Navigate to the releases page and edit the description of your release to contain the same bullet points as the changelog for that version.
- To prepare for next release, please now bump the minor version in
apps/vscode/package.jsonand add a new heading inapps/vscode/CHANGELOG.mdwith that bumped version number next to "(Unreleased)". example PR.
The circle of life, er, I mean, releasing and publishing is now complete.
Troubleshooting Releasing and Publishing
The "Publish VSCode Extension to Marketplaces" workflow failed
Check the logs of the action run. If publishing to Visual Studio Marketplace failed, it is likely because the key for this marketplace and the key has expired. Julia owns this key. Please message her in this case.