Я начал изучать Deno довольно поздно, примерно в то время, когда они выпустили v1. Я в основном занимаюсь PoC. Из-за отсутствия стабильных библиотек (например, aws-sdk) я не смог обосновать его использование в продакшене. Тем не менее, это не мешает мне рассматривать его для любых новых проектов, которые появятся на моем пути.

Если вы находитесь на этой странице, вы, вероятно, уже играли с Deno. Поэтому я не буду перечислять этапы его установки, вместо этого я поделюсь некоторыми советами, которые мне пригодились при работе с ним.

Расширение Deno для Visual Studio Code

Вы, вероятно, предпочитаете vim для редактирования текста, но если вам случится использовать VS Code для этой цели, вы найдете официальное расширение Deno очень удобным. Это должно быть первым элементом при поиске Deno в расширениях в VS Code. Вы также можете найти его на торговой площадке: Расширение Visual Studio Code Deno

💡 для пользователей рабочей области

Если вы используете рабочие области в VS Code, добавьте это в свой файл рабочей области, чтобы тот, кто начинает новый проект, мог быстро приступить к работе:

"extensions": {
    "recommendations": ["denoland.vscode-deno"]
  }

Настройка расширения

Расширение не включено глобально. Рекомендуется включать его для папки/рабочей области, а не для пользователя (глобально). Перейдите в настройки расширения и включите его:

Включение этого параметра добавит запись json в виде одного из следующих:

  • в файле рабочей области:
"settings": {
    "deno.enable": true
  }
  • в .vscode/settings.json для папки
{
  "deno.enable": true
}

Интеллисенс

Расширение обеспечивает поддержку IntelliSense для Deno. Это распространяется и на импорт удаленных URL-адресов — все, что вам нужно, это эти строки в ваших настройках:

{
  "deno.import_intellisense_autodiscovery": true,
  "deno.import_intellisense_origins": {
    "https://deno.land/":true
  }
}

Линтинг

Deno также поставляется с возможностью анализа как нестабильная функция. Если вы хотите, чтобы VS Code использовал это преимущество, добавьте следующие настройки:

{
  "deno.lint": true,
  "deno.unstable": true
} 

Форматирование

Чтобы использовать инструмент форматирования Deno в VS Code, вам понадобятся следующие настройки:

{
  "[typescript]": {
    "editor.defaultFormatter": "denoland.vscode-deno",
  }
}

Отладка

Создайте файл запуска (.vscode/launch.json) внутри вашего проекта:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Deno",
      "request": "launch",
      "type": "pwa-node",
      "program": "main.ts",
      "cwd": "${workspaceFolder}",
      "runtimeExecutable": "deno",
      "runtimeArgs": [
        "run",
        "--inspect-brk",
        "--allow-all"
      ],
      "attachSimplePort": 9229
    }
  ]
}

Убедитесь, что program относится к cwd. Добавьте несколько точек останова и начните отладку внутри VS Code. Еще о конфигурациях запуска.

Объединение вашего кода

Вполне вероятно, что вы хотите, чтобы ваш код Deno работал не на вашем ноутбуке, а, возможно, в контейнере, работающем где-то в облаке. Вы не хотите добавлять эти дополнительные секунды к запуску вашего приложения, когда Deno загружает все зависимости. Кроме того, всегда рекомендуется связывать зависимости во время сборки. Это можно сделать двумя способами:

Используйте комплектацию Deno

Deno пытается быть универсальным магазином для всех ваших потребностей в разработке. Поэтому он также включает возможности комплектации:

deno bundle src/main.ts dist/bundle.js

Приведенная выше команда создаст транспилированный файл JavaScript (dist/bundle.js), который включает все зависимости указанного ввода (src/main.ts). Его можно запустить как любой другой модуль:

deno run dist/bundle.js

Кэшировать и включать DENO_DIR

Можно указать Deno, где кэшировать его зависимости. Следующая команда кэширует все зависимости в .deno_dir.

DENO_DIR=.deno_dir deno cache main.ts

Заархивируйте и включите каталог .deno_dir в свой артефакт сборки, а в своем контейнере разархивируйте и сообщите Deno, где искать кеш:

DENO_DIR=.deno_dir deno run main.ts

Надеюсь, вы найдете вышеизложенное полезным.