1. ホーム
  2. deployment

[解決済み】npmを使用してpackage.jsonの依存関係を現在のディレクトリにインストールするにはどうすればよいですか?

2022-04-04 02:14:34

質問

Webアプリがあります。 フーアップ . 私は 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 は node_modules ディレクトリに私の app ディレクトリのコピーを作成し、その中にパッケージをインストールします。 別の node_modules ディレクトリです。

これは、パッケージをインストールするために理にかなっていると理解しています。 しかし、私は require() 私のウェブアプリを他の何かの中に入れて、直接動かしています。私は、特定のnode_modulesディレクトリに私の依存関係をインストールする簡単な方法を探しています。

どのように解決するのですか?

実行中です。

npm install

を app ディレクトリの中 (package.json がある場所) にインストールすると、依存関係がインストールされます。 に対して をモジュールとしてインストールするのではなく、アプリとしてインストールします。 ここに書かれているように . これらは package.json ファイルに相対する ./node_modules に配置されます (実際にはこれより少し複雑なので、確認してみてください)。 npmのドキュメントはこちら ).

node_modules ディレクトリをアプリの親ディレクトリに移動したい場合は、node の 'require' メカニズムがこれを理解するため、自由に移動できます。しかし、install/updateでアプリの依存関係を更新したい場合、npmは移動された'node_modules'を見ず、代わりに新しいディレクトリを作成します(これもpackage.jsonからの相対パス)。

これを防ぐには、アプリのディレクトリから再配置された node_modules へのシンボリックリンクを作成すればよいのです。

ln -s ../node_modules node_modules