在本页

设置您的环境

Deno CLI 包含许多开发应用程序常用的工具,包括一个完整的语言服务器,可以帮助您使用您选择的 IDE。您只需 安装 即可使用这些 工具

除了使用您最喜欢的 IDE 与 Deno 协作之外,本节还介绍了 Shell 自动补全环境变量

使用编辑器/IDE 跳转到标题

编辑器/IDE 对 Deno 的支持非常广泛。以下部分提供了有关如何在编辑器中使用 Deno 的信息。大多数编辑器使用语言服务器协议和集成到 Deno CLI 中的语言服务器直接与 Deno 集成。

如果您尝试编写或支持与 Deno 语言服务器的社区集成,可以在 Deno CLI 代码库中找到一些 文档,但也可以随时加入 Discord 社区#dev-lsp 频道。

Visual Studio Code 跳转到标题

有一个名为 vscode_denoVisual Studio Code 官方扩展。安装后,它将连接到 Deno CLI 中内置的语言服务器。

由于大多数人在混合环境中工作,因此扩展默认情况下不会将工作区启用为 *Deno 启用*,并且它要求设置 "deno.enable" 标志。您可以自己更改设置,也可以从命令面板中选择 Deno: 初始化工作区配置 来启用您的项目。

更多信息可以在手册的 使用 Visual Studio Code 部分找到。

JetBrains IDE 跳转到标题

您可以在 WebStorm 和其他 JetBrains IDE(包括 PhpStorm、IntelliJ IDEA Ultimate 和 PyCharm Professional)中获得对 Deno 的支持。为此,请从 *首选项 / 设置 | 插件 - 市场* 安装 官方 Deno 插件

查看 这篇博文,了解有关如何开始使用 Deno 的更多信息。

通过插件使用 Vim/Neovim 跳转到标题

Deno 在 VimNeovim 上通过 coc.nvimvim-easycompleteALE 获得了良好的支持。coc.nvim 提供插件来集成到 Deno 语言服务器,而 ALE 则 *开箱即用* 支持它。

使用内置语言服务器的 Neovim 0.6+ 跳转到标题

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

请注意,如果您也使用tsserver作为 LSP 客户端,您可能会遇到tsserverdenols同时连接到当前缓冲区的问题。为了解决这个问题,请确保为tsserverdenols设置一些唯一的root_dir。您可能还需要将tsserversingle_file_support设置为false,以防止它在单文件模式下运行。以下是一个配置示例

local nvim_lsp = require('lspconfig')
nvim_lsp.denols.setup {
  on_attach = on_attach,
  root_dir = nvim_lsp.util.root_pattern("deno.json", "deno.jsonc"),
}

nvim_lsp.tsserver.setup {
  on_attach = on_attach,
  root_dir = nvim_lsp.util.root_pattern("package.json"),
  single_file_support = false
}

对于 Deno,上面的示例假设项目根目录下存在deno.jsondeno.jsonc文件。

coc.nvim 跳转到标题

安装完coc.nvim后,您需要通过:CocInstall coc-deno安装所需的coc-deno

插件安装完成后,如果您想为工作区启用 Deno,请运行命令:CocCommand deno.initializeWorkspace,您应该能够使用gd(转到定义)和gr(转到/查找引用)等命令。

ALE 跳转到标题

ALE 通过 Deno 语言服务器开箱即用地支持 Deno,在许多使用情况下不需要额外的配置。安装完ALE后,您可以执行命令:help ale-typescript-deno以获取有关可用配置选项的信息。

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

Vim-EasyComplete 跳转到标题

Vim-EasyComplete 支持 Deno,无需任何其他配置。安装完vim-easycomplete后,如果您还没有安装 deno,则需要通过:InstallLspServer deno安装 deno。您可以从官方文档获取更多信息。

Emacs 跳转到标题

lsp-mode 跳转到标题

Emacs 通过使用lsp-mode的 Deno 语言服务器支持 Deno。安装完lsp-mode后,它应该支持 Deno,可以配置以支持各种设置。

eglot 跳转到标题

您也可以使用eglot来使用内置的 Deno 语言服务器。

通过 eglot 使用 Deno 的配置示例

(add-to-list 'eglot-server-programs '((js-mode typescript-mode) . (eglot-deno "deno" "lsp")))

  (defclass eglot-deno (eglot-lsp-server) ()
    :documentation "A custom class for deno lsp.")

  (cl-defmethod eglot-initialization-options ((server eglot-deno))
    "Passes through required deno initialization options"
    (list :enable t
    :lint t))

Pulsar 跳转到标题

Pulsar 编辑器(以前称为 Atom)支持通过atom-ide-deno包与 Deno 语言服务器集成。atom-ide-deno要求安装 Deno CLI 以及atom-ide-base包。

Sublime Text 跳转到标题

Sublime Text支持通过LSP 包连接到 Deno 语言服务器。您可能还想安装TypeScript 包以获得完整的语法高亮显示。

安装完 LSP 包后,您需要在.sublime-project配置中添加如下配置

{
  "settings": {
    "LSP": {
      "deno": {
        "command": ["deno", "lsp"],
        "initializationOptions": {
          // "config": "", // Sets the path for the config file in your project
          "enable": true,
          // "importMap": "", // Sets the path for the import-map in your project
          "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 跳转到标题

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

GitHub Codespaces 跳转到标题

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

如果一个项目是 Deno 启用的项目并且包含 .devcontainer 配置作为仓库的一部分,在 GitHub Codespaces 中打开项目应该可以“正常工作”。如果您要开始一个新项目,或者您想在现有的代码空间中添加 Deno 支持,可以通过从命令面板中选择 Codespaces: Add Development Container Configuration Files...,然后选择 Show All Definitions...,然后搜索 Deno 定义来添加它。

选择后,您需要重建您的容器,以便将 Deno CLI 添加到容器中。容器重建后,代码空间将支持 Deno。

Kakoune 跳转到标题

Kakoune 支持通过 kak-lsp 客户端连接到 Deno 语言服务器。一旦 kak-lsp 安装完成,一个配置它连接到 Deno 语言服务器的示例是将以下内容添加到您的 kak-lsp.toml

[language.typescript]
filetypes = ["typescript", "javascript"]
roots = [".git"]
command = "deno"
args = ["lsp"]
[language.typescript.settings.deno]
enable = true
lint = true

Helix 跳转到标题

Helix 带有内置的语言服务器支持。启用连接到 Deno 语言服务器需要更改 languages.toml 配置文件。

[[language]]
name = "typescript"
language-id = "typescript"
scope = "source.ts"
injection-regex = "^(ts|typescript)$"
file-types = ["ts"]
shebangs = ["deno"]
roots = ["deno.json", "deno.jsonc", "package.json"]
auto-format = true
language-servers = ["deno-lsp"]

[language-server.deno-lsp]
command = "deno"
args = ["lsp"]

[language-server.deno-lsp.config.deno]
enable = true

Shell 自动补全 跳转到标题

Deno CLI 内置了支持为 CLI 本身生成 shell 自动补全信息。通过使用 deno completions <shell>,Deno CLI 将输出到 stdout 自动补全信息。当前支持的 shell

  • bash
  • elvish
  • fish
  • powershell
  • zsh

bash 示例 跳转到标题

输出自动补全信息并将其添加到环境中

> deno completions bash > /usr/local/etc/bash_completion.d/deno.bash
> source /usr/local/etc/bash_completion.d/deno.bash

PowerShell 示例 跳转到标题

输出自动补全信息

> deno completions powershell >> $profile
> .$profile

这将在 $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 创建一个 PowerShell 配置文件,并且它将在您启动 PowerShell 时运行。

zsh 示例 跳转到标题

您应该有一个目录可以保存自动补全信息

> mkdir ~/.zsh

然后输出自动补全信息

> deno completions zsh > ~/.zsh/_deno

并确保自动补全信息在您的 ~/.zshrc 中加载

fpath=(~/.zsh $fpath)
autoload -Uz compinit
compinit -u

如果在重新加载 shell 后自动补全信息仍然没有加载,您可能需要删除 ~/.zcompdump/ 以删除先前生成的自动补全信息,然后 compinit 重新生成它们。

使用 ohmyzsh 和 antigen 的 zsh 示例 跳转到标题

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

# Load the oh-my-zsh's library.
antigen use oh-my-zsh

antigen bundle deno

fish 示例 跳转到标题

将自动补全信息输出到 fish 配置文件夹中的自动补全目录中的 deno.fish 文件

> deno completions fish > ~/.config/fish/completions/deno.fish

环境变量 跳转到标题

有一些环境变量会影响 Deno 的行为

  • DENO_AUTH_TOKENS - 一系列授权令牌,可用于允许 Deno 访问远程私有代码。有关更多详细信息,请参阅 私有模块和仓库 部分。
  • DENO_TLS_CA_STORE - 用于建立 TLS 连接时使用的证书存储列表。 可用的存储是 mozillasystem。 你可以指定一个、两个或都不指定。 证书链尝试按照你指定的顺序解析。 默认值为 mozillamozilla 存储将使用由 webpki-roots 提供的捆绑的 Mozilla 证书。 system 存储将使用你的平台的 本地证书存储。 Mozilla 证书的具体集合将取决于你使用的 Deno 版本。 如果你没有指定任何证书存储,那么在没有指定 DENO_CERT--cert 或为每个 TLS 连接指定特定证书的情况下,将不会信任任何 TLS 连接。
  • DENO_CERT - 从 PEM 编码的文件加载证书颁发机构。 这将“覆盖”--cert 选项。 有关更多信息,请参阅 代理 部分。
  • DENO_DIR - 这将设置存储来自 CLI 的缓存信息的目录。 这包括诸如缓存的远程模块、缓存的转译模块、语言服务器缓存信息以及从本地存储持久化的数据等项目。 这默认为操作系统默认的缓存位置,然后在 deno 路径下。
  • DENO_INSTALL_ROOT - 使用 deno install 时,安装的脚本将存储在何处。 这默认为 $HOME/.deno/bin
  • DENO_NO_PACKAGE_JSON - 设置为禁用自动解析 package.json 文件。
  • DENO_NO_PROMPT - 设置为禁用访问权限提示(替代在调用时传递 --no-prompt)。
  • DENO_NO_UPDATE_CHECK - 设置为禁用检查是否有更新的 Deno 版本可用。
  • DENO_WEBGPU_TRACE - 用于 WebGPU 跟踪的目录。
  • HTTP_PROXY - 用于 HTTP 请求的代理地址。 有关更多信息,请参阅 代理 部分。
  • HTTPS_PROXY - 用于 HTTPS 请求的代理地址。 有关更多信息,请参阅 代理 部分。
  • NO_COLOR - 如果设置,这将阻止 Deno CLI 在写入 stdout 和 stderr 时发送 ANSI 颜色代码。 有关此事实上的标准的更多信息,请访问网站 https://no-color.org。 此标志的值可以在运行时访问,而无需读取环境变量的权限,方法是检查 Deno.noColor 的值。
  • NO_PROXY - 指示应绕过其他环境变量中设置的代理的主机。 有关更多信息,请参阅 代理 部分。
  • NPM_CONFIG_REGISTRY - 通过 npm 指定符 加载模块时使用的 npm 注册表。