本页内容
设置你的环境
Deno 自带许多开发应用程序常用的工具,包括一个完整的 语言服务器 (LSP),以帮助增强你选择的 IDE 的功能。此页面将帮助你设置环境,以便在开发时充分利用 Deno。
我们将涵盖
- 如何在您喜欢的编辑器/IDE 中使用 Deno
- 如何生成 shell 补全
设置你的编辑器/IDE 跳转到标题
Visual Studio Code 跳转到标题
如果您尚未安装 Visual Studio Code,请从 官方网站 下载并安装。
在扩展选项卡中,搜索 "Deno" 并安装 Denoland 提供的扩展。
接下来,按 Ctrl+Shift+P
打开命令面板,然后键入 Deno: 初始化工作区配置
。 选择此选项以配置 Deno 用于您的工作区。
将在您的工作区中创建一个名为 .vscode/settings.json
的文件,其中包含以下配置
{
"deno.enable": true
}
就这样!您已成功为 Deno 使用 VSCode 设置了开发环境。 您现在将获得 Deno 的 LSP 的所有好处,包括 IntelliSense、代码格式化、代码检查等等。
JetBrains IDE 跳转到标题
要安装 Deno 插件,请打开你的 IDE 并转到 文件 > 设置。 导航到 插件 并搜索 Deno
。 安装官方 Deno 插件。
要配置插件,请再次转到 文件 > 设置。 导航到 语言 & 框架 > Deno。 选中 为你的项目启用 Deno 并指定 Deno 可执行文件的路径(如果尚未自动检测到)。
查看 这篇博文,了解有关如何在 Jetbrains IDE 中开始使用 Deno 的更多信息。
通过插件使用 Vim/Neovim 跳转到标题
Deno 在 Vim 和 Neovim 上都得到良好支持,通过 coc.nvim、 vim-easycomplete、 ALE 和 vim-lsp。 coc.nvim 提供插件来集成到 Deno 语言服务器,而 ALE *开箱即用* 支持它。
Neovim 0.6+ 使用内置语言服务器 跳转到标题
要使用 Deno 语言服务器,请安装 nvim-lspconfig 并按照说明启用 提供的 Deno 配置。
请注意,如果您也有 ts_ls
作为 LSP 客户端,您可能会遇到 ts_ls
和 denols
都附加到当前缓冲区的问题。 要解决此问题,请确保为 ts_ls
和 denols
设置一些唯一的 root_dir
。 您可能还需要将 single_file_support
设置为 false
,以防止 ts_ls
在 单文件模式
下运行。 以下是此类配置的示例
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.ts_ls.setup {
on_attach = on_attach,
root_dir = nvim_lsp.util.root_pattern("package.json"),
single_file_support = false
}
对于 Deno,上面的示例假定项目根目录中存在 deno.json
或 deno.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。 您可以从 官方文档 中获取更多信息。
Vim-Lsp 跳转到标题
通过 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.json
或 deno.jsonc
,或者使用 DENO_ENABLE=1
强制启用。 此外,如果您想在 intellisense 工具提示中突出显示语法,您也可以将此代码添加到您的 .vimrc
配置中
let g:markdown_fenced_languages = ["ts=typescript"]
Emacs 跳转到标题
lsp-mode 跳转到标题
Emacs 通过使用 lsp-mode 的 Deno 语言服务器支持 Deno。 安装 lsp-mode 后,它应该支持 Deno,可以 配置 以支持各种设置。
eglot 跳转到标题
您还可以使用内置的 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 "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: 添加开发容器配置文件...
,然后选择 显示所有定义...
,然后搜索 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"
roots = ["deno.json", "deno.jsonc", "package.json"]
auto-format = true
language-servers = ["deno-lsp"]
[[language]]
name = "javascript"
roots = ["deno.json", "deno.jsonc", "package.json"]
auto-format = true
language-servers = ["deno-lsp"]
[language-server.deno-lsp]
command = "deno"
args = ["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 配置文件文件夹中 completions 目录下的 deno.fish
文件
> deno completions fish > ~/.config/fish/completions/deno.fish
其他工具 跳转到标题
如果您正在编写或支持使用 Deno 语言服务器的社区集成,请阅读有关 与 Deno LSP 集成 的更多信息,也可以随时加入我们的 Discord 社区 中的 #dev-lsp
频道。