Spec-Zone.ru › Deno 2

Нестабильные флаги функций

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

deno --help

Использование флагов в командной строке

Вы можете включить флаг функции при запуске программы Deno из командной строки, передав флаг в качестве параметра командной строке. Вот пример запуска программы с включенным флагом --unstable-byonm:

deno run --unstable-byonm main.ts

Настройка флагов в deno.json

Вы можете указать, какие нестабильные функции вы хотите включить для своего проекта, используя параметр конфигурации в файле конфигурации deno.json.

deno.json
{
  "unstable": ["bare-node-builtins", "webgpu"]
}

Возможные значения в массиве unstable — имена флагов со снятым префиксом --unstable-.

Настройка с помощью переменных среды

Некоторые флаги можно включить, задав значение (любое значение) для переменной среды заданного имени, а не передавая его в качестве флага или параметра конфигурации deno.json. Флаги, которые можно настроить с помощью переменных среды, будут указаны ниже.

Вот пример настройки флага --unstable-bare-node-builtins через переменную среды:

export DENO_UNSTABLE_BARE_NODE_BUILTINS=true

--unstable-bare-node-builtins

Переменная среды: DENO_UNSTABLE_BARE_NODE_BUILTINS

Этот флаг позволяет вам импортировать встроенные модули Node.js без спецификатора node:, как в примере ниже. Вы также можете использовать этот флаг для включения пакетов npm без спецификатора npm:, если вы вручную управляете своими зависимостями Node.js (см. флаг byonm).

example.ts
import { readFileSync } from "fs";

console.log(readFileSync("deno.json", { encoding: "utf8" }));

--unstable-byonm

Переменная среды: DENO_UNSTABLE_BYONM

Этот флаг функции включает поддержку разрешения модулей из локальной папки node_modules, которую вы управляете вне Deno с помощью npm, pnpm или yarn. Это может повысить совместимость с модулями Node.js, у которых есть жёсткие требования к поведению установки клиентов npm или наличию папки node_modules.

В папке вашего проекта Deno включите файл package.json, который объявляет ваши зависимости, и управляйте ими с помощью клиента npm, как обычно. Рассмотрите файл package.json со следующими зависимостями:

package.json
{
  ...
  "dependencies": {
    "cowsay": "^1.5.0"
  }
  ...
}

Вы установите их, как обычно, с помощью:

npm install

После этого вы можете написать код в программе Deno, который выглядит так:

example.ts
import cowsay from "cowsay";

console.log(cowsay.say({
  text: "Hello from Deno using BYONM!",
}));

--unstable-detect-cjs

Переменная среды: DENO_UNSTABLE_DETECT_CJS

Загружает .js, .jsx, .ts, и .tsx модули как потенциально CommonJS в следующих дополнительных сценариях:

  1. В package.json отсутствует поле "type".
  2. Файл package.json не существует.

По умолчанию Deno загружает эти модули как потенциально CommonJS только тогда, когда вы находитесь в проекте с package.json, и ближайший package.json имеет { "type": "commonjs" }.

Требуется Deno >= 2.1.2

--unstable-sloppy-imports

Переменная среды: DENO_UNSTABLE_SLOPPY_IMPORTS

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

foo.ts
import { Example } from "./bar";
console.log(Example);
bar.ts
export const Example = "Example";

Выполнение скрипта с включёнными «небрежными» импортами удалит ошибку, но предоставит указание, что следует использовать более эффективную синтаксическую конструкцию.

Небрежные импорты позволят (но выведут предупреждения для) следующего:

  • Опустить расширения файлов из импортов
  • Использовать неверные расширения файлов (например, импортировать с расширением .js при фактическом файле с расширением .ts)
  • Импортировать путь к каталогу и автоматически использовать index.js или index.ts в качестве импорта для этого каталога

deno compile не поддерживает небрежные импорты.

--unstable-unsafe-proto

Deno сознательно отказался от поддержки Object.prototype.__proto__ по соображениям безопасности. Однако существует множество пакетов npm, которые полагаются на это свойство для правильной работы.

Этот флаг включает это свойство. Обратите внимание, что использование этого не рекомендуется, но если вам действительно нужно использовать пакет, который полагается на него, теперь доступен аварийный выход.

--unstable-webgpu

Включить WebGPU API в глобальном объеме, как в браузере. Ниже приведен простой пример получения базовой информации о GPU с помощью этого API:

// Try to get an adapter from the user agent.
const adapter = await navigator.gpu.requestAdapter();
if (adapter) {
  // Print out some basic details about the adapter.
  const adapterInfo = await adapter.requestAdapterInfo();

  // On some systems this will be blank...
  console.log(`Found adapter: ${adapterInfo.device}`);

  // Print GPU feature list
  const features = [...adapter.features.values()];
  console.log(`Supported features: ${features.join(", ")}`);
} else {
  console.error("No adapter found");
}

Просмотрите этот репозиторий для получения дополнительных примеров использования WebGPU.

--unstable-broadcast-channel

Включение этого флага делает BroadcastChannel веб-API доступным для использования в глобальном объеме, как в браузере.

--unstable-worker-options

Включить нестабильные параметры Web Worker API. В частности, это позволяет указывать разрешения, доступные рабочим:

new Worker(`data:application/javascript;base64,${btoa(`postMessage("ok");`)}`, {
  type: "module",
  deno: {
    permissions: {
      read: true,
    },
  },
}).onmessage = ({ data }) => {
  console.log(data);
};

--unstable-cron

Включение этого флага делает Deno.cron API доступным в пространстве имен Deno.

--unstable-kv

Включение этого флага делает API Deno KV доступными в пространстве имен Deno.

--unstable-net

Включить нестабильные API сети в пространстве имен Deno. Эти API включают:

  • Deno.DatagramConn

--unstable

--unstable устарел - используйте вместо него отдельные флаги

Флаг --unstable больше не используется для новых функций и будет удалён в будущих выпусках. Все нестабильные функции, которые были доступны с помощью этого флага, теперь доступны в виде отдельных нестабильных флагов, например:

  • --unstable-kv
  • --unstable-cron

Пожалуйста, используйте эти флаги функций в дальнейшем.

До недавних версий Deno (1.38+) нестабильные API предоставлялись все сразу с помощью флага --unstable. В частности, Deno KV и другие облачные API-интерфейсы доступны с помощью этого флага. Для запуска программы с доступом к этим нестабильным функциям вам нужно запустить скрипт с:

deno run --unstable your_script.ts

Рекомендуется использовать отдельные нестабильные флаги вместо этого; флаг --unstable теперь устарел и будет удален в Deno 2.

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/unstable_flags

Spec-Zone.ru

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