[Node.js]link-module-aliasとmodule-aliasの違い

システム開発Tips

Node.js名物、requireの相対パス地獄へようこそ。

開発が進んでディレクトリ構成などが固まってくるとrequireの呼び出しが地獄になっていきます。

sample.js

require(./../../../src/controller) // 助けて...

requireは相対パスでの指定となるので、呼び出す位置によってパスが変わるため厄介で何より美しくありません。

長らく放置してましたが、解決しておきたいということで、方法を探すと自力でシンボリックリンク張るとか書いてましたがOSSでも実現できるみたい。

module-aliasとlink-module-alias。

また名前似過ぎで、何が違うかわからない。。。

link-module-aliasは何が違うか。

link-module-aliasのnpmjsに以下の記述があり、link-module-aliasはVSCodeでモジュールエイリアスが解決されない問題を解決するために作られたようです。

作成に至った経緯

このモジュールは、別のパッケージ「module-alias」の代わりになります。
ランタイムにフックが必要な場合はモジュール「module-alias」を使用し、IDEとの良好な互換性が必要で、ランタイムハックが必要ない場合は「link-module-alias」を使用します。
「link-module-alias」は「node_modules」内にシンボリックリンクとプロキシパッケージの形式ですべてのモジュールリンクを静的に作成することです。この点で「module-alias」と異なります。
ハッキーな「require」フックはなく、サポートパッケージをロードする必要はありません。
link-module-aliasを作成する主な動機は、VSCodeでモジュールエイリアスが解決されない問題を修正することでした。

基本的にはlink-module-aliasはシンボリックリンクを作るだけっぽいですね。
module-aliasはアプリケーション上で再定義可能っぽいです。
特に動的にエイリアス変える必要がなければlink-module-aliasでよいのかなと思いました。でもgithubのstarの数が少なくてちょっと怖いですねー。

フォローお願いします!

コメント

タイトルとURLをコピーしました