私はWebアプリを持っています:fooapp。ルートにpackage.json
があります。特定のnode_modules directory
にすべての依存関係をインストールしたいです。どうやってこれをするの?
2つのwidget
依存関係があるとしましょう。このようなディレクトリ構造になってしまいたいです。
node_modules/
widgetA
widgetB
fooapp/
package.js
lib
..
npm install fooapp/
を実行するとこうなります。
node_modules/
fooapp/
node_modules/
widgetA
widgetB
package.js
lib/
..
fooapp/
package.js
lib/
..
npmは私のappディレクトリのコピーをnode_modulesディレクトリに作成し、その中にパッケージをインストールしますanother node_modulesディレクトリ。
私はこれがパッケージをインストールするのに理にかなっていることを理解しています。しかし、私は自分のWebアプリを他の何かの中にrequire()
するのではなく、直接実行します。私は依存関係を特定のnode_modulesディレクトリにインストールする簡単な方法を探しています。
ランニング:
npm install
appディレクトリ内(package.jsonが存在する場所)から、モジュールとしてインストールするのではなく、アプリの依存関係forをインストールします- ここで説明 。これらは、package.jsonファイルに関連する./node_modulesに配置されます(実際にはこれよりわずかに複雑なので、 npm docs here を確認してください)。
必要に応じて、node_modulesディレクトリをアプリの親ディレクトリに自由に移動できます。これは、ノードの「必須」メカニズムがこれを理解するためです。ただし、インストール/更新を使用してアプリの依存関係を更新する場合、npmは再配置された「node_modules」を認識せず、代わりにpackage.jsonに関連する新しいディレクトリを作成します。
これを防ぐには、アプリディレクトリから再配置されたnode_modulesへのシンボリックリンクを作成するだけです:
ln -s ../node_modules node_modules
私の場合は私がする必要があります
Sudo npm install
私のプロジェクトは/ var/wwwの中にあるので、私も適切な権限を設定する必要があります。