Skip to content negi.log()

node:プレフィックスについて調べた

import fs from 'node:fs'

Node.jsのコアモジュールをインポートする際、node:fsのようにnode:というプレフィックスを付けた書き方をよく目にします。 なぜnode:を付けるような書き方をしているのか理解していなかったので、調べてみました。

コアモジュールとは

コアモジュールとは、Node.jsが提供している組み込みモジュールのことを指します。つまり、npm installで追加しなくても使えるモジュールのことです。 ファイルを扱うfsやイベントエミッターを提供するevents、ファイルパスを操作するpathなどがあります。

コアモジュールはNode.jsのプロジェクトのlibに実装されています。 これらの関数はブラウザには実装されていませんが、バンドルツールがlibを参照することによってフロントエンドのプロジェクトでも使うことが可能です。

node:プレフィックスはいつから使えるようになったのか?

Node.jsの最新のドキュメントを見ると、どれもnode:プレフィックスを付けてコアモジュールが読み込まれています。 導入されたのは結構前で、v14の時から使えるようになったようです(リリースノート)。

導入の背景

node:プレフィックスが導入された目的は、コアモジュールとサードパーティのモジュールを明確に区別するためです。 コアモジュールにはquerystringというパッケージがありますが、npmにも同じ名前のパッケージが存在しており、ややこしい状況になっていました。

また、node:プレフィックスが導入されたことによって、コアモジュールのパッケージ名の選択肢が広がっています。 Node.jsのv18から提供されているnode:testパッケージは、testという一般的な名前がパッケージ名に付けられています。 これは、node:プレフフィックスが導入され、コアモジュールであることを明示的に示せるようになったことが影響しています。

今後追加されるパッケージは、node:プレフィックスを付けないとインポートできないとされています。 node:プレフィックスが使える環境でコアモジュールをインポートする際は、デメリットがないので、基本的にnode:プレフィックスを付けた方が好ましいです。

参考リンク