技術探し

JavaScriptを中心に記事を書いていきます :;(∩´﹏`∩);:

Node.jsのビルトインモジュールに名前空間が使われるかもしれない

注意: これはまだ未定です。
他にいい案があれば、提案やコメントをしてほしいです。


'use strict';

const fs = require('@nodejs/fs');
// import fs from '@nodejs/fs';

console.log(fs.readFileSync(__filename, 'utf8'));

このように、@nodejsという名前空間でビルトインモジュールを保護する案が出ています。
もちろん、過去のコードに影響はありません。


require('fs') === require('@nodejs/fs') にするべきかどうかのアンケート

PRは一旦、閉じられました。
github.com

発端

今現在、Ayo.js(Node.jsのdownstream)に試験的に導入されていたworkerがNode.js本体に入ろうとしてしています。

github.com

Workerとはなにか? blog.hiroppy.me

それにあたり、名前の衝突問題があります。

github.com

すでに、worker.jsというライブラリが、npmの方にworkerというのが登録しており、その名前を変更してもらい衝突を避ける提案です。
しかし、作者により拒否をされてしまったため、このような名前空間を付ける案がでる流れになりました。

将来

この変更が行われると過去からあるモジュールは後方互換のために、グローバルと@nodejsという名前空間の2つが存在し、今後入るモジュールには、名前空間の中にしか存在しないこととなります。

なので、これから書く新しいコードにはビルトインモジュールのインポートには名前空間を付ける習慣に変わるということが予想されます。

個人的には避けたい問題だと思いますが、拒否されてしまった以上、難しそうです。