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 > 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.jsondeno.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 键的完整列表(例如 configimportMapunstable),请参阅 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:

  1. 打开命令面板 (Cmd/Ctrl+Shift+P)。
  2. 运行 Codespaces: Add Development Container Configuration Files...
  3. 选择 Show All Definitions... 并搜索 Deno
  4. 重建容器,使 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 频道。

Last updated on

Did you find what you needed?

编辑此页面
Privacy policy