1. ホーム
  2. node.js

[解決済み] node_modules構造が深いNode.jsアプリケーションをWindowsにデプロイする方法とは?

2023-03-15 23:15:20

質問

どうやら、いくつかのNode.jsモジュールには、以下のような問題があるようです。 深い フォルダの階層が は、Windows のコピーコマンド(または PowerShell の Copy-Item は、パスが 250 文字を超えると、悪名高い "path too long" エラーを発生させます。

例えば、これは1つのNodeモジュールが作成できるフォルダ階層です。

node_modules\nodemailer\node_modules\simplesmtp\node_modules\
xoauth2\node_modules\request\node_modules\form-data\node_modules\
combined-stream\node_modules\delayed-stream\...

非常識なようですが、Nodeモジュールでは現実的です。

私たちはデプロイ時にコピーペーストを使用する必要があり (私たちは Git デプロイがオプションである Heroku のような "clever" ターゲットプラットフォームを使用していません)、これは Windows での深刻な制限です。

をコンパクトにする npm コマンドか何かはないのでしょうか? node_modules フォルダをコンパクトにするとか、実行時に実際に必要なものだけをインクルードするとか、そういうことはできないのでしょうか? (Nodeモジュールは通常 test フォルダなどがあります)。それを回避するための他のアイデアはありますか?Windowsを使用しないという選択肢は残念ながらありません :)

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

npm v3(先日リリース)では、依存関係をフラットにすることでこの問題を解決しています。リリースノートは https://github.com/npm/npm/releases/tag/v3.0.0 の下にある flat flat セクションの下にあります。

そして、この問題の最後のコメント https://github.com/npm/npm/issues/3697