19 Punkte von xguru 2024-06-03 | 7 Kommentare | Auf WhatsApp teilen

Node.js-Test-Runner

  • Node.js enthält jetzt standardmäßig einen Test-Runner
  • In Testdateien können Tests geschrieben werden, indem das Modul node:test importiert wird
  • Einen einzelnen Test ausführen: node --test tests/math.test.js
  • Erkennt Testdateien automatisch und führt sie aus
  • Mit dem mitgelieferten Modul assert lassen sich Tests prüfen
  • Mit Test-Suites und Hooks können zusammengehörige Tests gruppiert und verwaltet werden

Native Mocking-Unterstützung in Node.js

  • Node.js enthält jetzt native Mocking-Funktionen
  • Mocking-Funktionen, die sonst andere Test-Frameworks bereitstellen, können direkt in Node.js genutzt werden
  • Mit der Methode mock aus dem Modul node:test lässt sich Mocking umsetzen

Native Test-Coverage in Node.js

  • Test-Coverage hilft dabei, den von Tests abgedeckten Bereich des Source Codes zu verstehen
  • Ab Node.js 20 gibt es native Test-Coverage-Unterstützung
  • Mit dem Flag --experimental-coverage lassen sich Test-Coverage-Daten erzeugen
  • Über Coverage-Reports können nicht getestete Codebereiche identifiziert werden

Node.js-Watch-Modus

  • Der Watch-Modus erkennt Dateiänderungen in Echtzeit und führt Skripte automatisch erneut aus
  • Externe Abhängigkeiten wie Nodemon sind nicht erforderlich
  • Mit dem Flag --watch lassen sich Dateiänderungen erkennen und Skripte automatisch ausführen

Node.js Corepack

  • Corepack fungiert als Brücke zwischen Projekt und Paketmanager
  • Im Projekt kann der zu verwendende Paketmanager festgelegt werden, den Corepack dann automatisch verwaltet
  • Mit dem Befehl corepack enable kann Corepack aktiviert werden

Node.js-.env-Loader

  • Ab Node.js 20 gibt es native Unterstützung zum Laden von Umgebungsvariablen aus .env-Dateien
  • Mit dem Flag --env-file lässt sich eine .env-Datei laden
  • Es können mehrere .env-Dateien geladen werden, um verschiedene Umgebungen zu konfigurieren

Unterstützung für import.meta in Node.js

  • Node.js v20.11.0 und v21.2.0 unterstützen import.meta.filename und import.meta.dirname
  • Dateipfade und Verzeichnisnamen lassen sich dadurch einfacher abrufen

Native Timer-Promises in Node.js

  • Ab Node.js v15 können Timer in Form von Promises verwendet werden
  • setTimeout und setInterval können als Promises genutzt werden, um asynchronen Code kompakter zu schreiben

Node.js-Permission-Modul

  • Eine experimentelle Funktion zur Kontrolle des Ressourcenzugriffs von Node.js-Anwendungen
  • Mit dem Flag --experimental-permission lässt sich der Zugriff auf Dateisystem, Netzwerk, Umgebungsvariablen usw. einschränken

Node.js-Policy-Modul

  • Eine Sicherheitsfunktion, die das Laden von Schadcode verhindern soll
  • Mit dem Flag --experimental-policy lässt sich eine Policy-Datei angeben und das Laden von Modulen steuern

7 Kommentare

 
cometkim 2024-06-05

node --run wird hier nicht erwähnt. Seit den neuesten Versionen lassen sich Skripte ohne Abhängigkeit von NPM ausführen. Der Start ist um ein Vielfaches schneller.

 
tsboard 2024-06-03

Während ich diesmal am tsboard-Projekt gearbeitet habe, habe ich den Bun-Runtime ausführlich mit Node.js verglichen. Node.js ist zwar wirklich in fast jeder Hinsicht gut, aber diese zwei Punkte bleiben weiterhin schade: (1) keine TypeScript-Unterstützung, (2) Geschwindigkeit. Dinge wie die Kompatibilität oder dass es Hardware-Ressourcen nicht besonders wählerisch behandelt, finde ich hingegen wirklich beeindruckend.

Wenn Sie TypeScript und Ausführungsgeschwindigkeit berücksichtigen, schauen Sie sich die Bun-Runtime ruhig auch einmal an...!

 
[Dieser Kommentar wurde ausgeblendet.]
 
edunga1 2024-06-03

Wow – im Original wird sogar Jest erwähnt.

 
edunga1 2024-06-05

Ich habe versucht, in einem kleinen Projekt von jest zu node.js zu wechseln, aber die Unterstützung für Assertion-Funktionen ist viel zu dürftig, daher eher nichts für mich :(

 
kandk 2024-06-03

Die neuesten Trends werden ja unglaublich schnell aufgegriffen..

 
dylanju 2024-06-03

Und natives Mocking!