On this page
设置你的环境
Deno 附带许多在应用程序开发中常用的工具,包括完整的 语言服务 (LSP),以支持你选择的 IDE。本页面将帮助你配置环境,以便在开发时充分利用 Deno。
我们将涵盖:
- 如何在你最喜欢的编辑器/IDE 中使用 Deno
- 如何生成 shell 补全
设置你的编辑器/IDE Jump to heading
Visual Studio Code Jump to heading
如果你还没有安装,请从 官方网站下载并安装 Visual Studio Code。
在扩展视图中搜索 "Deno" 并安装 Denoland 的扩展。
接下来,按下 Ctrl+Shift+P 打开命令面板,输入
Deno: Initialize Workspace Configuration,选择该选项以配置 Deno
以适配你的工作区。

一个名为 .vscode/settings.json 的文件会在你的工作区中创建,内容如下:
{
"deno.enable": true
}
就是这样!你已经成功使用 VSCode 为 Deno 设置好了开发环境。你现在将获得 Deno 的 LSP 带来的全部优势,包括 IntelliSense、代码格式化、代码检查等更多功能。
JetBrains IDEs Jump to heading
要安装 Deno 插件,打开你的 IDE 并前往 File > Settings。
导航至 Plugins,搜索 Deno,并安装官方的 Deno 插件。

要配置插件,返回到 File > Settings,导航到 Languages & Frameworks > JavaScript Runtime。将 Preferred Runtime 切换为 Deno。在 Deno 下面,指定 Deno 可执行文件的路径(如果未自动检测到)。
查看 这篇博客文章 以了解如何在 JetBrains IDE 中开始使用 Deno 的更多信息。
Vim/Neovim Jump to heading
Neovim 0.6+ 的推荐设置是使用内置语言服务器客户端 并配合 nvim-lspconfig,它自带一个 现成的 Deno 配置。
如果你还配置了 ts_ls,两个服务器都可能附加到同一个缓冲区。
为避免这种情况,请给每个服务器设置不同的 root_dir(或 root_markers),并在 ts_ls 上设置
single_file_support = false:
vim.lsp.config('denols', {
on_attach = on_attach,
root_markers = {"deno.json", "deno.jsonc"},
})
vim.lsp.config('ts_ls', {
on_attach = on_attach,
root_markers = {"package.json"},
single_file_support = false,
})
这假定你的 Deno 项目根目录下存在 deno.json 或 deno.jsonc。
Kickstart.nvim 和 Mason LSP。 如果你使用
kickstart.nvim,请将等效配置添加到 init.lua 中的 servers 表:
local servers = {
-- ... 一些配置
ts_ls = {
root_dir = require("lspconfig").util.root_pattern({ "package.json", "tsconfig.json" }),
single_file_support = false,
settings = {},
},
denols = {
root_dir = require("lspconfig").util.root_pattern({"deno.json", "deno.jsonc"}),
single_file_support = false,
settings = {},
},
}
其他 Vim/Neovim 插件。 如果你更喜欢其他插件生态,Deno 也可以与以下插件配合使用:
-
ALE: 开箱即支持 Deno 语言服务器。参见
:help ale-typescript-deno了解配置选项。 -
coc.nvim: 使用
:CocInstall coc-deno安装 coc-deno,然后在 你的项目中运行:CocCommand deno.initializeWorkspace。 -
vim-easycomplete: 安装后,运行
:InstallLspServer deno。详见 项目 README。 -
vim-lsp: 在你的
.vimrc中注册 Deno 语言服务器:if executable('deno') let server_config = { \ 'name': 'deno', \ 'cmd': {server_info->['deno', 'lsp']}, \ 'allowlist': ['typescript', 'javascript', 'javascriptreact', 'typescriptreact'], \ } if exists('$DENO_ENABLE') let deno_enabled = $DENO_ENABLE == '1' let server_config['workspace_config'] = { 'deno': { 'enable': deno_enabled ? v:true : v:false } } endif au User lsp_setup call lsp#register_server(server_config) endif通过在工作目录中放置
deno.json/deno.jsonc,或者设置DENO_ENABLE=1来激活服务器。若要在 intellisense 提示中高亮语法,还可以添加:let g:markdown_fenced_languages = ["ts=typescript"]
Zed Jump to heading
Zed 编辑器 可通过 Deno 扩展集成 Deno 语言服务器。
Helix Jump to heading
Helix 自带语言服务器支持。
要连接到 Deno 语言服务器,需要修改
languages.toml 配置文件。
[[language]]
name = "typescript"
roots = ["deno.json", "deno.jsonc", "package.json"]
file-types = ["ts", "tsx"]
auto-format = true
language-servers = ["deno-lsp"]
[[language]]
name = "javascript"
roots = ["deno.json", "deno.jsonc", "package.json"]
file-types = ["js", "jsx"]
auto-format = true
language-servers = ["deno-lsp"]
[language-server.deno-lsp]
command = "deno"
args = ["lsp"]
config.deno.enable = true
Emacs Jump to heading
lsp-mode。 Emacs 可通过 Deno 语言服务器使用 lsp-mode 支持 Deno。 一旦 lsp-mode 安装完成, 它应该支持 Deno,并且可以被 配置为支持 各种设置。
eglot。 你也可以通过
eglot 使用内置的 Deno 语言服务器。示例配置:
(add-to-list 'eglot-server-programs '((js-mode typescript-mode) . (eglot-deno "deno" "lsp")))
(defclass eglot-deno (eglot-lsp-server) ()
:documentation "Deno LSP 的自定义类。")
(cl-defmethod eglot-initialization-options ((server eglot-deno))
"传递必要的 deno 初始化选项"
(list
:enable t
:unstable t
:typescript
(:inlayHints
(:variableTypes
(:enabled t))
(:parameterTypes
(:enabled t)))))
这相当于 VSCode 中 settings.json 的以下配置:
{
"deno.enable": true,
"deno.unstable": true,
"typescript.inlayHints.variableTypes.enabled": true,
"typescript.inlayHints.parameterTypes.enabled": true
}
Sublime Text Jump to heading
Sublime Text 支持通过
LSP package 连接到 Deno
语言服务器。安装完成后,在你的 .sublime-project 中添加一个最小的 Deno 客户端:
{
"settings": {
"LSP": {
"deno": {
"command": ["deno", "lsp"],
"enabled": true,
"selector": "source.ts | source.tsx | source.js | source.jsx",
"initializationOptions": {
"enable": true,
"lint": true
}
}
}
}
}
关于支持的 initializationOptions 键的完整列表(例如 config、
importMap 和 unstable),请参阅
LSP 集成参考中的 Settings 部分
以及
LSP package 文档。
Kakoune Jump to heading
Kakoune 通过 kak-lsp 客户端支持连接 Deno 语言服务器。安装
kak-lsp 后,可在 kak-lsp.toml 中添加如下配置示例:
[language.typescript]
filetypes = ["typescript", "javascript"]
roots = [".git"]
command = "deno"
args = ["lsp"]
[language.typescript.settings.deno]
enable = true
lint = true
Nova Jump to heading
Nova 编辑器 可通过 Deno 扩展集成 Deno 语言服务器。
Pulsar Jump to heading
Pulsar 编辑器,前身为 Atom 支持
通过 atom-ide-deno 包集成 Deno 语言服务器。
atom-ide-deno 要求安装 Deno CLI,并且还需要安装
atom-ide-base 包。
远程开发 Jump to heading
GitHub Codespaces Jump to heading
GitHub Codespaces 让你可以在 一个托管环境中开发,而无需在本地安装 Deno。
如果仓库已经包含带有 Deno 的 .devcontainer 配置,那么在 Codespaces 中打开它即可正常工作。要为没有该配置的 Codespace 添加 Deno:
- 打开命令面板 (
Cmd/Ctrl+Shift+P)。 - 运行
Codespaces: Add Development Container Configuration Files...。 - 选择
Show All Definitions...并搜索Deno。 - 重建容器,使 Deno CLI 可用。
Shell 自动补全 Jump to heading
Deno CLI 内置支持为自身生成 shell 补全脚本。使用 deno completions <shell> 命令,Deno CLI 会将补全内容输出到 stdout。目前支持的 shell 如下:
- bash
- elvish
- fish
- powershell
- zsh
bash 示例 Jump to heading
输出补全脚本并加载到环境中:
deno completions bash > /usr/local/etc/bash_completion.d/deno.bash
source /usr/local/etc/bash_completion.d/deno.bash
PowerShell 示例 Jump to heading
输出补全脚本:
deno completions powershell >> $profile
.$profile
这会在 $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 创建 PowerShell 配置文件,并在每次启动 PowerShell 时自动运行。
zsh 示例 Jump to heading
你应有一个目录用来存放补全脚本:
mkdir ~/.zsh
然后输出补全:
deno completions zsh > ~/.zsh/_deno
确保你的 ~/.zshrc 中加载补全:
fpath=(~/.zsh $fpath)
autoload -Uz compinit
compinit -u
若重新加载 shell 后补全仍未生效,尝试删除 ~/.zcompdump/ 目录清除旧补全缓存,再次运行 compinit。
使用 ohmyzsh 和 antigen 的 zsh 示例 Jump to heading
ohmyzsh 是 zsh 配置框架,方便管理 shell 配置, antigen 是 zsh 插件管理器。
创建目录并输出补全:
mkdir ~/.oh-my-zsh/custom/plugins/deno
deno completions zsh > ~/.oh-my-zsh/custom/plugins/deno/_deno
你的 .zshrc 可能如下:
source /path-to-antigen/antigen.zsh
# 加载 oh-my-zsh。
antigen use oh-my-zsh
antigen bundle deno
fish 示例 Jump to heading
将补全脚本输出至 fish 配置目录中的文件:
deno completions fish > ~/.config/fish/completions/deno.fish
动态补全 Jump to heading
传递 --dynamic 标志可生成了解你的项目的补全。目前这会让你的 shell 在输入 deno task <TAB> 时建议 deno.json 中定义的任务名称:
deno completions --dynamic zsh > ~/.zsh/_deno
动态补全是不稳定特性,可能会在未来版本中发生变化。
构建你自己的 LSP 集成 Jump to heading
如果你正在构建或维护与 Deno 语言
服务器的社区集成,请参阅 LSP 集成参考
并加入 Deno Discord 上的 #dev-lsp 频道。