Deno 1.0.0 был выпущен в мае 2020 года. Он имеет встроенные утилиты, такие как инспектор зависимостей (deno info), средство форматирования кода (deno fmt), отладчик и средство запуска тестов. Он также поддерживает ожидание верхнего уровня.

Но Deno существует всего 2 года, поэтому количество сторонних библиотек намного меньше по сравнению с репозиторием NPM. Но не волнуйтесь, если вы ищете библиотеку, которая еще не доступна на deno.land/x, благодаря Deno вы все еще можете запускать некоторые пакеты npm в Deno.

Deno предоставляет слой Node compatibility, который позволит нам использовать некоторые пакеты NPM, которые не используют не полифиллы Node.js API.

Загрузка модуля CommonJs

`createRequire(…)` предназначен для создания функции `require` для загрузки модулей CJS. Он также устанавливает поддерживаемые глобальные переменные.

import { createRequire } from "https://deno.land/std/node/module.ts";
const require = createRequire(import.meta.url);
// Loads native module polyfill.
const path = require("path");
// Loads extensionless module.
const cjsModule = require("./my_mod");

Как мы знаем, Deno работает в среде Sandbox, что означает, что у него нет доступа к сети и файловой системе, если это не указано явно. Чтобы запустить и загрузить необходимый модуль, Deno потребуется разрешение на чтение файла.

deno run — allow-read yourcode.js

Вы можете ограничить его только node_modules

deno run — allow-read=node_modules yourcode.js

Примечание.

  • Вы не можете использовать пакеты NPM, которые используют Node API без полигонов.
  • По возможности используйте только сторонние пакеты Deno.
  • Проверьте все совместимые с Deno модули здесь: Сторонние модули Deno
  • Некоторые API Deno по-прежнему нестабильны, поэтому, возможно, придется использовать

`— нестабильный` флаг, чтобы включить его во время выполнения.

  • Вы можете напрямую импортировать какой-либо модуль npm, который не использует встроенный Nodejs, от поставщика ESM, как указано ниже.

провайдеры ESM CDN

Deno может импортировать модули из любого места в Интернете, например GitHub, персонального веб-сервера или CDN.

Ниже поставщики CDN, которые позволяют использовать пакеты npm в качестве ESM.

Например, если вы хотите использовать «строку запроса», вы можете использовать unpkg.

import queryString from https://unpkg.com/[email protected]/index.js
const stringified = queryString.stringify(queryObj);

Использование JSPM

import esprima from "https://dev.jspm.io/esprima";

const program = 'const answer = 42';
console.log(esprima.tokenize(program))

Сводка

Поскольку Deno 1.0.0 был выпущен совсем недавно, а уровень совместимости Nodejs все еще находится в стадии разработки, вы можете увидеть лучшую поддержку пакетов npm в будущем. Используйте уровень совместимости Nodejs только тогда, когда у вас не осталось выбора, в противном случае всегда ищите сторонний модуль Deno, доступный на deno.land/x.