編集

Node.js v20

Node.js v20.0.0 がリリース。

以下で扱わない情報として、ファイルのアクセスやプロセスの起動を制限する新しいパーミッションモデルが追加された他、ESM Loader API が Worker 内で実行されるようになりアプリ側と実行コンテキストを分離できるようになりました。

#Stable Test Runner

内蔵されているテストランナーnode:testが Stable になりました。node:testは Jest などとほぼ同じインターフェイスを持っており、また内蔵されているため別途インストールなどは必要ありません。describe、beforeEach、mock.fn など主要なものは Node.js v18 からサポートされており、カバレッジレポートなども experimental フラグは必要なものの既に利用できます。

jsx
import assert from "node:assert";
import { mock, test, beforeEach, describe } from "node:test";

describe("tests", async () => {
  const sum = mock.fn((a, b) => {
    return a + b;
  });
  beforeEach(() => console.log("about to run a test"));
  it("is a subtest", () => {
    assert.ok("some relevant assertion here");
  });
});

https://nodejs.org/api/test.html

#New ECMAScript Features

Node.js v20 で V8 のバージョンが 11.3 に上がったため、新しい ECMAScript の機能が利用できるようになっています。

#RegExp v flag

このvフラグでは、集合演算が追加される他、いくつかの Properties of Stringsが追加され複数のコードポイントからなる絵文字を扱えるようになります。

https://github.com/tc39/proposal-regexp-v-flag

このフラグは、uフラグの改善を目的の 1 つにしており、Properties of Strings はuフラグでも扱えるようにする提案がある他、WhatWGでは HTML の input 要素の pattern 属性がuフラグからvフラグに置き換えられています。

#Change Array by Copy

破壊的なことで有名な sort()や reverse()の非破壊バージョンが扱えます。

https://github.com/tc39/proposal-change-array-by-copy

jsx
const array = [2, 6, 3];
array.toReversed(); // [3, 6, 2]
array.toSorted(); // [2, 3, 6]
array.with(1, 2); // [2, 2, 3]

#参考文献

編集