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.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Professional,Development,Programmer,Cooperating,Meeting,And,Brainstorming,And,Programming,Website

(Bild: Maridav / Shutterstock.com)

Lesezeit: 2 Min.
Von
  • Maika Möbus

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.

Deno bietet bereits seit Version 1.15 durch einen Kompatibilitäts-Layer 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.

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. Ein Blogeintrag wirft zudem einen Blick zurück auf das vergangene Jahr.

Weitere Details zu Version 1.30 finden sich ebenfalls auf dem Deno-Blog.

(mai)