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.