Spec-Zone.ru › Deno 2

Настройка среды

Deno поставляется со многими инструментами, которые обычно нужны для разработки приложений, включая полноценный языковой сервер (LSP), помогающий использовать выбранную вами IDE. Эта страница поможет настроить среду, чтобы вы могли максимально эффективно работать с Deno во время разработки.

Мы рассмотрим:

  • Как использовать Deno в любимом редакторе/IDE
  • Как создавать автодополнение команд оболочки

Настройка редактора/IDE

Visual Studio Code

Если вы ещё не сделали этого, загрузите и установите Visual Studio Code с официального сайта.

На вкладке Extensions найдите «Deno» и установите расширение от Denoland.

Затем откройте палитру команд, нажав Ctrl+Shift+P, и введите Deno: Initialize Workspace Configuration. Выберите этот пункт, чтобы настроить Deno для своей рабочей области.

The VSCode command palette with the Deno: Initialize Workspace Configuration option selected.

В рабочей области будет создан файл .vscode/settings.json со следующей конфигурацией:

{
  "deno.enable": true
}

Готово! Вы успешно настроили среду разработки для Deno с помощью VSCode. Теперь вам доступны все преимущества LSP Deno, включая IntelliSense, форматирование кода, линтинг и многое другое.

IDE JetBrains

Чтобы установить плагин Deno, откройте IDE и перейдите в File > Settings. Откройте раздел Plugins и найдите Deno. Установите официальный плагин Deno.

The WebStorm plugins settings

Чтобы настроить плагин, снова перейдите в 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, где его ещё нет:

  1. Откройте палитру команд (Cmd/Ctrl+Shift+P).
  2. Выполните Codespaces: Add Development Container Configuration Files....
  3. Выберите Show All Definitions... и найдите Deno.
  4. Пересоберите контейнер, чтобы 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.

Последнее обновление: 2 июля 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/getting_started/setup_your_environment

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API