Visual Studio Code plugin for Deno
This extension adds support for using Deno with Visual
Studio Code, powered by the Deno language server.
⚠️ Important: You need to have a version of Deno CLI installed (v1.13.0 or
later). The extension requires the executable and by default will use the
environment path. You can explicitly set the path to the executable in Visual
Studio Code Settings fordeno.path
.Check here for instructions on how to
install the Deno CLI.
deno
is available in the environment path, or set its path via thedeno.path
setting in VSCode.Ctrl+Shift+P
, and run the Deno:We recognize that not every TypeScript/JavaScript project that you might work on
in VSCode uses Deno — therefore, by default, this extension will only apply the
Deno language server when the setting deno.enable
is set to true
. This can
be done via editing the settings or using the command Deno: Initialize
Workspace Configuration.
While you can enable Deno globally, you probably only want to do that if every
JavaScript/TypeScript workspace you work on in VSCode is a Deno based one.
The extension provides several commands:
Deno: Cache - instructs Deno to fetch and cache all the dependencies of the
current file open in the editor. This is similar to doing deno cache
on the
command line. Deno will not automatically fetch and cache remote dependencies.
ℹ️ If there are missing dependencies in a module, the extension will
provide a quick fix to fetch and cache those dependencies, which invokes
this command for you.
Deno: Enable - will enable Deno on the current workspace. Alternatively you
can create a deno.json
or deno.jsonc
file at the root of your workspace.
Deno: Language Server Status - displays a page of information about the
status of the Deno Language Server. Useful when submitting a bug about the
extension or the language server.
Deno: Reload Import Registries Cache - reload any cached responses from the
configured import registries.
Deno: Welcome - displays the information document that appears when the
extension is first installed.
The extension provides formatting capabilities for JavaScript, TypeScript, JSX,
TSX, JSON and markdown documents. When choosing to format a document or setting
up a default formatter for these type of files, the extension should be listed
as an option.
When configuring a formatter, you use the extension name, which in the case of
this extension is denoland.vscode-deno
. For example, to configure Deno to
format your TypeScript files automatically on saving, you might set your
settings.json
in the workspace like this:
{
"deno.enable": true,
"deno.lint": true,
"editor.formatOnSave": true,
"[typescript]": { "editor.defaultFormatter": "denoland.vscode-deno" }
}
Or if you wanted to have Deno be your default formatter overall:
{
"deno.enable": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "denoland.vscode-deno"
}
Troubleshoot: If you choose this option, ensure your user settings don’t
have any language-specific settings set for this. VSCode will add this
automatically in some cases:
// User `settings.json`:
{
// Remove this:
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
}
The formatter will respect the settings in your Deno configuration file, which
can be explicitly set via deno.config
or automatically detected in the
workspace. You can find more information about formatter settings at
Deno Tools - Formatter.
ℹ️ It does not currently provide format-on-paste or format-on-type
capabilities.
You can control the settings for this extension through your VS Code settings
page. You can open the settings page using the Ctrl+,
keyboard shortcut. The
extension has the following configuration options:
deno.enable
: Controls if the Deno Language Server is enabled. When enabled,deno lsp
) instead.false
deno.disablePaths
: Controls if the Deno Language Server is disabled fordeno.enablePaths
: Controls if the Deno Language Server is enabled for onlydeno.path
: A path to the deno
executable. If unset, the extension will usedeno
executable. If set, the extension/usr/bin/deno
, C:\Program Files\deno\deno.exe
).deno.cache
: Controls the location of the cache (DENO_DIR
) for the DenoDENO_DIR
environmentdeno.cacheOnSave
: Controls if the extension should cache the activedeno.codeLens.implementations
: Enables or disables the display of code lensfalse
deno.codeLens.references
: Enables or disables the display of code lensfalse
deno.codeLens.referencesAllFunctions
: Enables or disables the display ofdeno.codeLens.references
to be enabled as well. boolean, default false
deno.codeLens.test
: Enables or disables the display of test code lens onfalse
. This feature is deprecated, seedeno.testing
belowdeno.codeLens.testArgs
: Provides additional arguments that should be set[ "--allow-all" ]
.deno.config
: The file path to a configuration file. This is the equivalent--config
on the command line. The path can be either be relative todeno.json
or deno.jsonc
. string, default null
, examples:./deno.jsonc
, /path/to/deno.jsonc
, C:\path\to\deno.jsonc
deno.documentPreloadLimit
: Maximum number of file system entries to traverse0
todeno.importMap
: The file path to an import map. This is the equivalent to--import-map
on the command line.null
, examples: ./import_map.json
, /path/to/import_map.json
,C:\path\to\import_map.json
deno.inlayHints.enumMemberValues.enabled
- Enable/disable inlay hints fordeno.inlayHints.functionLikeReturnTypes.enabled
- Enable/disable inlay hintsdeno.inlayHints.parameterNames.enabled
- Enable/disable inlay hints for"none"
, "literals"
, "all"
.deno.inlayHints.parameterNames.suppressWhenArgumentMatchesName
- Do notdeno.inlayHints.parameterTypes.enabled
- Enable/disable inlay hints fordeno.inlayHints.propertyDeclarationTypes.enabled
- Enable/disable inlaydeno.inlayHints.variableTypes.enabled
- Enable/disable inlay hints fordeno.inlayHints.variableTypes.suppressWhenTypeMatchesName
- Suppress typedeno.internalDebug
: If enabled the Deno Language Server will log additionaldeno.internalInspect
: Enables the inspector server for the JS runtime useddeno.lint
: Controls if linting information will be provided by the Denotrue
deno.maxTsServerMemory
: Maximum amount of memory the TypeScript isolate candeno.suggest.imports.hosts
: A map of domain hosts (origins) that are useddeno.testing.args
: Arguments to use when running tests via the Test[ \"--allow-all\" ]
.deno.unstable
: Controls if code will be executed with Deno’s unstable APIs.--unstable
on the command line.false
To see which versions of this extension can be used with each version of the
Deno CLI, consult the following table.
Deno CLI | vscode-deno |
---|---|
1.40.0 onwards | 3.40.0 onwards |
1.37.2 - 1.39.4 | 3.34.0 - 3.39.0 |
1.37.1 | 3.32.0 - 3.33.3 |
1.37.0 | 3.28.0 - 3.31.0 |
? - 1.36.4 | 3.27.0 |
Version ranges are inclusive. Incompatibilites prior to 3.27.0 were not tracked.
Learn how to setup & contribute to this project
This project was inspired by
justjavac/vscode-deno and
axetroy/vscode-deno. Thanks for their
contributions.
The MIT License