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本体に入ろうとしてしています。
Workerとはなにか? blog.hiroppy.me
それにあたり、名前の衝突問題があります。
すでに、worker.js
というライブラリが、npmの方にworker
というのが登録しており、その名前を変更してもらい衝突を避ける提案です。
しかし、作者により拒否をされてしまったため、このような名前空間を付ける案がでる流れになりました。
将来
この変更が行われると過去からあるモジュールは後方互換のために、グローバルと@nodejs
という名前空間の2つが存在し、今後入るモジュールには、名前空間の中にしか存在しないこととなります。
なので、これから書く新しいコードにはビルトインモジュールのインポートには名前空間を付ける習慣に変わるということが予想されます。
個人的には避けたい問題だと思いますが、拒否されてしまった以上、難しそうです。