Настройка среды
Deno поставляется со многими инструментами, которые обычно нужны для разработки приложений, включая полноценный языковой сервер (LSP), помогающий использовать выбранную вами IDE. Эта страница поможет настроить среду, чтобы вы могли максимально эффективно работать с Deno во время разработки.
Мы рассмотрим:
- Как использовать Deno в любимом редакторе/IDE
- Как создавать автодополнение команд оболочки
Настройка редактора/IDE
Visual Studio Code
Если вы ещё не сделали этого, загрузите и установите Visual Studio Code с официального сайта.
На вкладке Extensions найдите «Deno» и установите расширение от Denoland.
Затем откройте палитру команд, нажав Ctrl+Shift+P, и введите Deno: Initialize Workspace Configuration. Выберите этот пункт, чтобы настроить Deno для своей рабочей области.
В рабочей области будет создан файл .vscode/settings.json со следующей конфигурацией:
{
"deno.enable": true
}
Готово! Вы успешно настроили среду разработки для Deno с помощью VSCode. Теперь вам доступны все преимущества LSP Deno, включая IntelliSense, форматирование кода, линтинг и многое другое.
IDE JetBrains
Чтобы установить плагин Deno, откройте IDE и перейдите в File > Settings. Откройте раздел Plugins и найдите Deno. Установите официальный плагин Deno.
Чтобы настроить плагин, снова перейдите в File > Settings. Откройте раздел Languages & Frameworks > JavaScript Runtime. В пункте Preferred Runtime выберите Deno. В разделе Deno укажите путь к исполняемому файлу Deno (если он не был определён автоматически).
Подробнее о начале работы с Deno в IDE JetBrains читайте в этой статье в блоге.
Vim/Neovim
Рекомендуемый способ настройки Neovim 0.11+ — встроенный клиент языкового сервера вместе с nvim-lspconfig, в который входит готовая конфигурация Deno.
Если у вас также настроен ts_ls (языковой сервер TypeScript), оба сервера могут подключаться к одному буферу. В последних версиях nvim-lspconfig это предотвращается по умолчанию: конфигурация ts_ls пропускает проекты, содержащие deno.json, deno.jsonc или deno.lock. Если у вас более старая версия плагина или вы настраиваете серверы самостоятельно, задайте для каждого сервера отдельный root_markers и установите workspace_required = true для ts_ls, чтобы сервер подключался только при обнаружении package.json:
vim.lsp.config('denols', {
root_markers = { "deno.json", "deno.jsonc" },
})
vim.lsp.config('ts_ls', {
root_markers = { "package.json" },
workspace_required = true,
})
vim.lsp.enable({ 'denols', 'ts_ls' })
Предполагается, что в корне проекта Deno находится deno.json или deno.jsonc. Обратите внимание: для workspace_required требуется Neovim версии 0.11.1 или новее. Устаревший параметр single_file_support здесь не действует: он используется только устаревшим API require('lspconfig').setup() и молча игнорируется в vim.lsp.config().
Kickstart.nvim и Mason LSP. Если вы используете kickstart.nvim, добавьте эквивалентную конфигурацию в таблицу servers в файле init.lua:
local servers = {
-- ... some configuration
ts_ls = {
root_markers = { "package.json" },
workspace_required = true,
settings = {},
},
denols = {
root_markers = { "deno.json", "deno.jsonc" },
settings = {},
},
}
Другие плагины Vim/Neovim. Если вы предпочитаете другую экосистему плагинов, Deno также работает со следующими плагинами:
-
ALE: поддерживает языковой сервер Deno из коробки. Варианты настройки см. в
:help ale-typescript-deno. -
coc.nvim: установите coc-deno с помощью
:CocInstall coc-deno, затем выполните:CocCommand deno.initializeWorkspaceв проекте. -
vim-easycomplete: после установки выполните
:InstallLspServer deno. Подробнее см. в файле README проекта. -
vim-lsp: зарегистрируйте языковой сервер Deno в
.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Активируйте сервер, поместив
deno.json/deno.jsoncв рабочий каталог или задавDENO_ENABLE=1. Чтобы подсвечивать синтаксис во всплывающих подсказках intellisense, добавьте также:let g:markdown_fenced_languages = ["ts=typescript"]
Zed
Редактор Zed может взаимодействовать с языковым сервером Deno через расширение Deno.
Helix
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
lsp-mode. Emacs поддерживает Deno через языковой сервер Deno с помощью lsp-mode. После установки lsp-mode он должен поддерживать Deno; его можно настроить для использования различных параметров.
eglot. Вы также можете использовать встроенный языковой сервер Deno через eglot. Пример конфигурации:
(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
:unstable t
:typescript
(:inlayHints
(:variableTypes
(:enabled t))
(:parameterTypes
(:enabled t)))))
Это эквивалентно следующим настройкам в файле settings.json VSCode:
{
"deno.enable": true,
"deno.unstable": true,
"typescript.inlayHints.variableTypes.enabled": true,
"typescript.inlayHints.parameterTypes.enabled": true
}
Sublime Text
Sublime Text поддерживает подключение к языковому серверу Deno через пакет LSP. После его установки добавьте минимальную конфигурацию клиента Deno в .sublime-project:
{
"settings": {
"LSP": {
"deno": {
"command": ["deno", "lsp"],
"enabled": true,
"selector": "source.ts | source.tsx | source.js | source.jsx",
"initializationOptions": {
"enable": true,
"lint": true
}
}
}
}
}
Полный список поддерживаемых ключей initializationOptions (например, config, importMap и unstable) см. в разделе Settings справочника по интеграции LSP и в документации пакета LSP.
Kakoune
Kakoune поддерживает подключение к языковому серверу Deno через клиент kak-lsp. После установки 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
Nova
Редактор Nova может взаимодействовать с языковым сервером Deno через расширение Deno.
Pulsar
Редактор Pulsar, ранее известный как Atom, поддерживает интеграцию с языковым сервером Deno через пакет atom-ide-deno. atom-ide-deno требует установки CLI Deno, а также пакета atom-ide-base.
Удалённая разработка
GitHub Codespaces
GitHub Codespaces позволяет разрабатывать в размещённой среде без локальной установки Deno.
Если в репозитории уже есть конфигурация .devcontainer с Deno, достаточно открыть его в Codespaces. Чтобы добавить Deno в Codespace, где его ещё нет:
- Откройте палитру команд (
Cmd/Ctrl+Shift+P). - Выполните
Codespaces: Add Development Container Configuration Files.... - Выберите
Show All Definitions...и найдитеDeno. - Пересоберите контейнер, чтобы CLI Deno стал доступен.
Автодополнение команд оболочки
В CLI Deno встроена поддержка генерации данных автодополнения для самого CLI. При использовании deno completions <shell> CLI Deno выводит данные автодополнения в stdout. Поддерживаются следующие оболочки:
- 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
Если после перезапуска оболочки автодополнение по-прежнему не загружается, возможно, потребуется удалить ~/.zcompdump/, чтобы удалить ранее созданные данные автодополнения, а затем выполнить compinit, чтобы создать их заново.
Пример для zsh с ohmyzsh и antigen
ohmyzsh — это платформа конфигурации для zsh, упрощающая управление настройками оболочки. 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
Динамическое автодополнение
Передайте флаг --dynamic, чтобы создать автодополнение с учётом вашего проекта. Сейчас это позволяет оболочке предлагать имена задач, определённые в deno.json, при вводе deno task <TAB>:
deno completions --dynamic zsh > ~/.zsh/_deno
Динамическое автодополнение нестабильно и может измениться в будущих выпусках.
Создание собственной интеграции LSP
Если вы создаёте или поддерживаете интеграцию с языковым сервером Deno для сообщества, ознакомьтесь со справочником по интеграции LSP и присоединитесь к каналу #dev-lsp в Discord Deno.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/getting_started/setup_your_environment