../../../../../../ ..の回避
アプリケーションのすべてが適切にパブリックnpmに属しているわけではなく、プライベートnpmまたはgitリポジトリをセットアップするオーバーヘッドは、多くの場合、依然としてかなり大きいです。ここでは、../../../../../../../
相対パスの問題を回避するためのいくつかのアプローチを示し
ます。
node_modules
npmからサードパーティのモジュールをチェックインしないと内部モジュールをチェックインする方法が明確でないため、アプリケーション固有のモジュールをnode_modulesに入れることに反対する人がいます。
答えは簡単です!.gitignore
無視するファイルがある場合node_modules
:
node_modules
!
内部アプリケーションモジュールごとに例外を追加できます。
node_modules/*
!node_modules/foo
!node_modules/bar
あなたがすることはできませんのでご注意ください除外を解除サブディレクトリ、親がすでに無視されている場合。したがって、を無視する代わりに、トリックを使用して
内部のnode_modules
すべてのディレクトリを無視する必要があります。その後、例外を追加できます。 node_modules
node_modules/*
今、どこでも、あなたのアプリケーションでは次のことができるようになりますrequire('foo')
か、require('bar')
非常に大規模で脆弱な相対パスを有しない。
多くのモジュールがあり、それらをnpmによってインストールされたサードパーティのモジュールからより分離したい場合は、次のnode_modules
ようなディレクトリの下にそれらをすべて置くことができますnode_modules/app
:
node_modules/app/foo
node_modules/app/bar
これ
で、アプリケーションのどこからでも、require('app/foo')
またはrequire('app/bar')
どこからでもアクセスできるようになります。
で.gitignore
、次の例外を追加するだけですnode_modules/app
:
node_modules/*
!node_modules/app
アプリケーションのトランスフォームがpackage.jsonで構成されている場合、トランスフォームはモジュールの境界を越えて適用されないため、独自のトランスフォームフィールドを使用して、node_modules/foo
またはnode_modules/app/foo
コンポーネントディレクトリに個別のpackage.jsonを作成する必要があります。これにより、アプリケーションの構成変更に対するモジュールの堅牢性が向上し、アプリケーションの外部でパッケージを個別に再利用しやすくなります。
シンボリックリンク
シンボリックリンクを作成でき、ウィンドウをサポートする必要がないアプリケーションで作業している場合のもう1つの便利なトリックは、lib/
またはapp/
フォルダーをにシンボリックリンクすることnode_modules
です。プロジェクトのルートから、以下を実行します。
ln -s ../lib node_modules/app
そして、プロジェクトのどこからでも、getをlib/
実行require('app/foo.js')
することにより、ファイルを要求できるようになりlib/foo.js
ます。
カスタムパス
$NODE_PATH
環境変数の使用について話したりopts.paths
、nodeおよびbrowserifyのディレクトリを追加してモジュールを検索したりする場所が見られるかもしれません。
他のほとんどのプラットフォームとは異なり、パススタイルのシェルスタイルの配列をで$NODE_PATH
使用することは、node_modules
ディレクトリを効果的に使用することと比較して、ノードではあまり有利ではありません。
これは、アプリケーションがランタイム環境の構成とより密接に結合されているため、可動部分が多くなり、環境が正しく設定されている場合にのみアプリケーションが機能するためです。
nodeとbrowserifyはどちらもサポートしますが、の使用はお勧めしません
$NODE_PATH
。