跳到主要内容

设置您的环境

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

在使用Deno与您喜欢的IDE之外,本节还记录了shell完成环境变量

使用编辑器/IDE

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

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

Visual Studio Code

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

由于大多数人在混合环境中工作,该扩展默认不会启用工作区作为“Deno启用”,需要设置"deno.enable"标志。您可以自己更改设置,或者可以选择从命令面板中选择Deno: 初始化工作区配置来启用您的项目。

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

JetBrains IDE

您可以在WebStorm和其他JetBrains IDEs上获得对Deno的支持,包括PhpStorm、IntelliJ IDEA Ultimate和PyCharm Professional。为此,请安装官方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语言服务器。一旦安装了[lsp-mode](https://emacs-lsp.github.io/lsp-mode/page/install

ation/),它应该支持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": "", // 设置项目中配置文件的路径
"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

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,将以下内容添加到您的 kak-lsp.toml 配置文件中,以将其配置连接到 Deno 语言服务器:

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

Shell 自动完成

Deno CLI 内置支持生成 CLI 自动完成信息。通过使用 deno completions <shell>,Deno CLI 将将 CLI 自动完成信息输出到标准输出。当前支持的 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

这将创建一个 Powershell 配置文件在 $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,并且每当您启动 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 示例

将自动完成信息输出到 deno.fish 文件中,保存到 fish 配置文件夹中的自动完成目录:

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

环境变量

有一些环境变量可以影响 Deno 的行为:

  • DENO_AUTH_TOKENS - 用于允许 Deno 访问远程私有代码的授权令牌列表。请参阅 Private modules and repositories 部分获取更多详情。
  • DENO_TLS_CA_STORE - 在建立 TLS 连接时使用的证书存储列表。支持的存储包括 mozillasystem。您可以指定其中一个、两者或都不指定。证书链尝试以指定的顺序解析。默认值为 mozillamozilla 存储将使用由 webpki-roots 提供的捆绑 Mozilla 证书。system 存储将使用您的平台的本机证书存储。Mozilla 证书的确切集合取决于您使用的 Deno 版本。如果未指定证书存储,那么将不给予任何未指定 DENO_CERT--cert 的 TLS 连接信任,或未指定每个 TLS 连接的特定证书。
  • DENO_CERT - 从 PEM 编码文件中加载证书颁发机构。这将“覆盖”--cert选项。请参阅 Proxies 部分获取更多信息。
  • 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 请求的代理地址。请参阅 Proxies 部分获取更多信息。
  • HTTPS_PROXY - 用于 HTTPS 请求的代理地址。请参阅 Proxies 部分获取更多信息。
  • NO_COLOR - 如果设置,将阻止 Deno CLI 在写入 stdout 和 stderr 时发送 ANSI 颜色代码。请参阅网站https://no-color.org/获取有关这个事实上的标准的更多信息。可以在运行时通过检查 Deno.noColor 的值来访问此标志,而无需读取环境变量的权限。
  • NO_PROXY - 指示应绕过在其他环境变量中设置的代理的主机。请参阅 Proxies 部分获取更多信息。
  • NPM_CONFIG_REGISTRY - 在通过 npm specifiers 加载模块时要使用的 npm 注册表。