Skip to main content
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 命令面板,选中 Deno: Initialize Workspace Configuration 选项。

一个名为 .vscode/settings.json 的文件会在你的工作区中创建,内容如下:

{
  "deno.enable": true
}

就这样!你已经成功设置了 VSCode 的 Deno 开发环境。现在你可以享受 Deno LSP 提供的所有功能,包括智能感知(IntelliSense)、代码格式化、代码检查等。

JetBrains IDEs Jump to heading

要安装 Deno 插件,打开你的 IDE 并前往 File > Settings。 导航至 Plugins,搜索 Deno,并安装官方的 Deno 插件。

WebStorm 插件设置

要配置插件,返回到 File > Settings,导航到 Languages & Frameworks > Deno。勾选 Enable Deno for your project, 并指定 Deno 可执行文件的路径(如果未自动检测)。

查看 这篇博客文章 以了解如何在 JetBrains IDE 中开始使用 Deno 的更多信息。

Vim/Neovim 通过插件 Jump to heading

Deno 在 VimNeovim 上有良好支持,可以通过 coc.nvimvim-easycompleteALEvim-lsp 插件实现。coc.nvim 提供与 Deno 语言服务器集成的插件,而 ALE 开箱即用支持 Deno。

Neovim 0.6+ 使用内置语言服务器 Jump to heading

要使用 Deno 语言服务器,请安装 nvim-lspconfig 并按照说明启用 所提供的 Deno 配置

请注意,如果你同时使用 ts_ls 作为 LSP 客户端,可能会出现 ts_lsdenols 同时附加到当前缓冲区的问题。为解决此问题,请确保为 ts_lsdenols 设置不同的 root_dir。你可能还需将 ts_lssingle_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.jsondeno.jsonc 文件。

Kickstart.nvim 和 Mason LSP Jump to heading

如果你使用 kickstart.nvim,可以将上述配置以如下方式添加至你的 init.lua 配置中的服务器表:

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 = {},
        },
    }

coc.nvim Jump to heading

安装 coc.nvim 后,你需要通过命令 :CocInstall coc-deno 安装 coc-deno 插件。

插件安装完毕后,如想在某个工作区启用 Deno,可以运行命令 :CocCommand deno.initializeWorkspace,然后即可使用 gd(跳转到定义)、gr(查找引用)等命令。

ALE Jump to heading

ALE 原生支持 Deno 语言服务器,许多情况下无需额外配置。安装 ALE 后,执行 :help ale-typescript-deno 以获取可用配置选项信息。

有关如何设置 ALE(如键绑定)的更多信息,请参考 官方文档

Vim-EasyComplete Jump to heading

Vim-EasyComplete 默认支持 Deno,无需额外配置。安装 vim-easycomplete 后,若尚未安装 Deno,需通过 :InstallLspServer deno 安装。更多信息详见 官方文档

Vim-Lsp Jump to heading

通过 vim-plug 或 vim 包管理器安装 Vim-Lsp 后,在你的 .vimrc 添加以下配置:

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

启用 LSP 服务器有两种方式:一种是在当前工作目录下存在 deno.jsondeno.jsonc 文件,另一种是通过环境变量 DENO_ENABLE=1 强制启用。如果你想让 IntelliSense 中的工具提示高亮语法,也可在 .vimrc 中添加:

let g:markdown_fenced_languages = ["ts=typescript"]

Emacs Jump to heading

lsp-mode Jump to heading

Emacs 通过 Deno 语言服务器使用 lsp-mode 支持 Deno。安装 lsp-mode 后,默认支持 Deno,可进行 配置 来自定义设置。

eglot Jump to heading

你也可以使用内置 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
}

Pulsar Jump to heading

Pulsar 编辑器,前身为 Atom 支持通过 atom-ide-deno 包集成 Deno 语言服务器。 atom-ide-deno 需要安装 Deno CLI,并依赖 atom-ide-base 包。

Sublime Text Jump to heading

Sublime Text 通过 LSP 插件 连接到 Deno 语言服务器。你可能还需要安装 TypeScript 插件 以获得完整语法高亮。

安装 LSP 插件后,在 .sublime-project 文件中添加以下配置:

{
  "settings": {
    "LSP": {
      "deno": {
        "command": ["deno", "lsp"],
        "initializationOptions": {
          // "config": "", // 设置项目中配置文件路径
          "enable": true,
          // "importMap": "", // 设置项目导入映射路径
          "lint": true,
          "unstable": false
        },
        "enabled": true,
        "languages": [
          {
            "languageId": "javascript",
            "scopes": ["source.js"],
            "syntaxes": [
              "Packages/Babel/JavaScript (Babel).sublime-syntax",
              "Packages/JavaScript/JavaScript.sublime-syntax"
            ]
          },
          {
            "languageId": "javascriptreact",
            "scopes": ["source.jsx"],
            "syntaxes": [
              "Packages/Babel/JavaScript (Babel).sublime-syntax",
              "Packages/JavaScript/JavaScript.sublime-syntax"
            ]
          },
          {
            "languageId": "typescript",
            "scopes": ["source.ts"],
            "syntaxes": [
              "Packages/TypeScript-TmLanguage/TypeScript.tmLanguage",
              "Packages/TypeScript Syntax/TypeScript.tmLanguage"
            ]
          },
          {
            "languageId": "typescriptreact",
            "scopes": ["source.tsx"],
            "syntaxes": [
              "Packages/TypeScript-TmLanguage/TypeScriptReact.tmLanguage",
              "Packages/TypeScript Syntax/TypeScriptReact.tmLanguage"
            ]
          }
        ]
      }
    }
  }
}

Nova Jump to heading

Nova 编辑器 可通过 Deno 扩展 集成 Deno 语言服务器。

GitHub Codespaces Jump to heading

GitHub Codespaces 允许你完全在线或远程在本地机器上开发,无需额外配置或安装 Deno。目前处于早期访问阶段。

如果项目启用了 Deno,并包含 .devcontainer 配置作为库的一部分,则在 Codespaces 中打开项目应可“开箱即用”。若创建新项目或想为现有环境添加 Deno 支持,可通过命令面板选择 Codespaces: Add Development Container Configuration Files...,然后选择 Show All Definitions... 并搜索 Deno 定义。

选中后需要重建容器,容器内会添加 Deno CLI。重建后,代码空间即可支持 Deno。

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

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

Zed Jump to heading

Zed 编辑器 可通过 Deno 扩展 集成 Deno 语言服务器。

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

如果你正在开发或支持使用 Deno 语言服务器的社区集成,请参考 更多关于与 Deno LSP 集成的信息,并欢迎随时加入我们的 Discord 社区#dev-lsp 频道交流。

你找到了你需要的东西吗?

编辑此页面
隐私政策