Deno 1.27

Улучшенная интеграция с IDE, совместимость с npm, стабильный deno task
, обновленные API Deno и стандартной библиотеки, обновленная версия V8 и другое.
Сообщение о релизе и инструкции по обновлению опубликовали в блоге Deno: Deno 1.27: Major IDE Improvements.
Итак, что же нового?
Inlay Hints
Deno теперь передает в Language Server "Inlay Hints" - подсказки, которые встраляются в строку кода, например, для обозначения названия аргумента функции или типа переменной:


Автокомлит при вводе имени пакета
Это обновление не привязано конкретно к версии 1.27, но разработчики связывают его с этим релизом.
Теперь при импорте файлов из deno.land/x
Language Server будет подсказывать доступные варианты, а также показывать документацию файла:


Поддержка типов в npm-пакетах
Теперь Deno сообщает IDE о типах в пакетах, установленных через npm, если типы указаны в пакете.

Для пакетов, использующих @types
, нужно указывать специальную директиву перед импортом:
// @deno-types="npm:@types/chalk@4"
import chalk from "npm:chalk@4";
Если пакет еще и требует @types/node
, нужно указывать еще одну директиву, чтобы подтянуть типы node
:
/// <reference types="npm:@types/node" />
// @deno-types="npm:@types/express@4"
import express from "npm:express@4.18";
Поддержка Node-API
Node-API позволяет использовать нативный код из Node.js. Его поддержка открывает разработчикам на Deno доступ к библиотекам parcel
, sqlite3
, usb
и fs-xattr
. Поддержка включается флагом --allow-ffi
.
Lockfile v2
Версии и чексуммы пакетов npm
теперь записываются в локфайл. Локфайл будет использоваться по-умолчанию в версии 1.28.
Поддержка тегов дистрибутива (dist tags) npm
У некоторых пакетов npm есть теги дистрибутива, которые ссылаются на определенные версии. Например у пакета express
на момент выхода поста есть тег next
, резолвящийся в версию 5.0.0-beta.1
.
Deno теперь умеет импортировать пакеты по тегу дистрибутива:
import express from "npm:express@next";
Поддержка пакетов npm в deno cache
deno cache
теперь понимает спецификатор npm:
:
deno cache --unstable npm:chalk@5 npm:express
navigator.language
Новый API возвращает системную локаль:
$ LC_ALL=es_ES deno
> navigator.language
"es-ES"
Кроме того, поддерживается navigator.languages
, возвращающий массив предпочитаемых локалей, в котором первый элемент идентичен navigator.language
.
deno task стабилен
deno task
теперь считается стабильным и не будет сильно изменяться в будущем. Соответствующее предупреждение было удалено из утилиты.
INIT_CWD в deno task
Задачи deno task
по-умолчанию запускаются в той рабочей директории, в которой лежит файл deno.json. Новая переменная окружения $INIT_CWD
позволяет перейти в каталог, из которого команда была вызвана:
{
"tasks": {
"my_task": "cd $INIT_CWD && pwd"
}
}
Обработка ошибок в асинхронно запущенных командах в deno task
Прежде, если несколько команд в deno task
были запущены асинхронно, и она из них падала, вторая могла продолжить работу скрытно от пользователя:
{
"tasks": {
"start": "deno run --allow-net server.ts & deno run --allow-net client.ts"
}
}
С этого релиза при ошибке в любой асинхронной команде Deno завершает все команды.
И другое
Это только самые интересные обновления, остальные включаются изменения в API, обновления V8 до версии 10.8 и прочее. Полный список доступен в блоге Deno.
Материал подготовлен с ❤️ редакцией Кухни IT.