すでにかなりの調査をしました。しかし、Node プロジェクトの package.json の 'main' パラメータについてはまだ疑問があります。
- このフィールドに入力するとどのようなメリットがありますか? 別の言い方をすると、このフィールドが表示された場合、別のスタイルでモジュールを開始できますか?
- メイン パラメータに複数のスクリプトを入力できますか? できる場合、スクリプトは 2 つのスレッドとして開始されますか? できないと、モジュール内で 2 つのスクリプトを開始し、それらを並行して実行するにはどうすればよいですか?
2 番目の質問がかなり奇妙であることは承知しています。これは、OpenShift で Node.js アプリケーションをホストしたのですが、そのアプリケーションは 2 つの主要コンポーネントで構成されているためです。1 つは REST API で、もう 1 つは通知配信サービスです。
通知配信プロセスが単一のスレッドとして実装された場合、REST API がブロックされるのではないかと心配しています。ただし、それらは同じ MongoDB カートリッジに接続する必要があります。さらに、可能であれば両方のコンポーネントが同じギアで機能することができれば、ギアを 1 つ節約できます。
ご提案があれば歓迎いたします。
ベストアンサー1
npm ドキュメントより:
main フィールドは、プログラムへの主要なエントリ ポイントとなるモジュール ID です。つまり、パッケージの名前が foo で、ユーザーがそれをインストールし、require("foo") を実行すると、メイン モジュールのエクスポート オブジェクトが返されます。
これは、パッケージ フォルダーのルートを基準としたモジュール ID である必要があります。
ほとんどのモジュールでは、メイン スクリプトのみを用意し、それ以外のスクリプトはあまり用意しないのが最も合理的です。
簡単に言うと:
- パッケージへのエントリ ポイントがルート フォルダーの と異なる場合にのみ、
main
にパラメータが必要です。たとえば、エントリ ポイントをまたはに設定することがよくありますが、この場合、対応するスクリプトはでとして記述する必要があります。package.json
index.js
lib/index.js
lib/<packagename>.js
main
package.json
main
エントリ ポイントrequire('yourpackagename')
を明確に定義する必要があるため、という 2 つのスクリプトを持つことはできません。