web-dev-qa-db-ja.com

npmを使用して現在のディレクトリにpackage.json依存関係をインストールする方法

私は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ディレクトリにインストールする簡単な方法を探しています。

173

ランニング:

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
350
ireddick

私の場合は私がする必要があります

Sudo npm install  

私のプロジェクトは/ var/wwwの中にあるので、私も適切な権限を設定する必要があります。

13
aesede