JavaScript-Runtime: Deno 1.30 erweitert den Support für Node.js-Module
Built-in Node.js-Module lassen sich nun in Deno ohne Kompatibilitäts-Layer nutzen und deno.json wird zur Import Map.
Die JavaScript- und TypeScript-Runtime Deno hat Version 1.30 erreicht. Im ersten Release des Jahres widmet sich die vom Node.js-Erfinder Ryan Dahl stammende Runtime erneut der Verwendung mit Node.js-Modulen. Zudem fügt das Release drei neue APIs hinzu, die derzeit noch als instabil gelten: Deno.Conn.ref()
, Deno.Conn.unref()
und Deno.osUptime()
. Letztere erfordert die --allow-sys=osUptime
-Erlaubnis. Der deno.core
-Namespace entfällt in diesem Release, was laut dem Deno-Team auf die meisten Nutzer keine Auswirkungen haben dürfte.
Neuer Specifier für Node.js-Module
Deno bietet bereits seit Version 1.15 durch einen Kompatibilitäts-Layer [1] Zugriff auf in Node.js integrierte Module wie File System, Path oder Process. Neu in Version 1.30 ist der Zugriff mittels node:
Specifier:
import { readFileSync } from "node:fs";
console.log(readFileSync("deno.json", { encoding: "utf8" }));
Allerdings ist der Import mithilfe eines reinen Specifier nicht ohne Import Map möglich. Beispielsweise würde import { readFileSync } from "fs";
zu einem Fehler führen. Sollte man das versuchen und der Specifier einem built-in Node.js-Modul gleichen, das nicht in einer Import Map auffindbar ist, erzeugt Deno eine Fehlermeldung. Diese weist auf das fehlende node:
-Präfix hin. Das Language Server Protocol (LSP) bietet zudem einen Quick Fix an, um den node:
Specifier hinzuzufügen.
Verwenden von deno.json als Import Map
Vom Deno-Team als ein größeres Update der Konfigurationsdatei beschrieben, lässt sich die deno.json-Datei nun als Import Map verwenden. Entwicklerinnen und Entwickler können nun imports
- und scopes
-Keys in der Konfiguration spezifizieren. Deno betrachtet die Konfigurationsdatei dann als Import Map.
Wird in deno.json folgender Code verwendet
{
"imports": {
"std/": "https://deno.land/std@0.174.0/"
}
}
dann funktioniert das folgende Script mit einem reinen Specifier:
import { assertEquals } from "std/testing/assert.ts";
assertEquals(1, 2);
Auf GitHub lassen sich die aktuellen Neuerungen in der Q1-Roadmap verfolgen [2]. Ein Blogeintrag wirft zudem einen Blick zurück auf das vergangene Jahr [3].
Weitere Details zu Version 1.30 finden sich ebenfalls auf dem Deno-Blog [4].
(mai [5])
URL dieses Artikels:
https://www.heise.de/-7472990
Links in diesem Artikel:
[1] https://www.heise.de/news/Webentwicklung-Deno-1-15-stabilisiert-API-zum-URL-Pattern-Matching-6217593.html
[2] https://github.com/denoland/deno/issues/17475
[3] https://deno.com/blog/deno-in-2022
[4] https://deno.com/blog/v1.30
[5] mailto:mai@heise.de
Copyright © 2023 Heise Medien