1. ホーム
  2. javascript

[解決済み] [Solved] package.jsonのパラメータ'main'を使用するには?

2022-04-12 09:59:58

質問

すでにかなり検索しています。しかし、Nodeプロジェクトのpackage.jsonの「main」パラメータについては、まだ疑問が残っています。

  1. このフィールドを埋めることはどのように役立つのでしょうか?別の方法で尋ねると、このフィールドがある場合、別のスタイルでモジュールを開始することができますか?
  2. メインパラメータに複数のスクリプトを記入することは可能ですか?もしそうなら、それらは2つのスレッドとして起動されるのでしょうか?もしできない場合、1つのモジュールで2つのスクリプトを起動し、それらを並行して実行させるにはどうすればよいですか?

2つ目の質問はかなり奇妙なことだと分かっています。私はOpenShift上でNode.jsアプリケーションをホストしていますが、そのアプリケーションは2つの主要コンポーネントから構成されているからです。1つはREST APIで、もう1つは通知配信サービスです。

通知配信処理をシングルスレッドで実装した場合、REST APIがブロックされてしまうのではないかと心配です。しかし、それらは同じMongoDBカートリッジに接続する必要があります。さらに、可能であれば両方のコンポーネントを同じギアで提供できれば、ギアを1つ節約することができます。

どんな提案でも歓迎します。

解決方法は?

から npmのドキュメント :

メインフィールドは、モジュール ID であり、このフィールドは、あなたの プログラムです。つまり、パッケージの名前がfooで、ユーザがそれをインストールすると を実行し、require("foo")を実行すると、メインモジュールのexports オブジェクトが返されます。

これは、パッケージのルートからの相対的なモジュール ID である必要があります。 フォルダーに格納されます。

ほとんどのモジュールでは、メインスクリプトを持つことが最も理にかなっています。 それ以外はあまりないことが多い。

手短に言うと

  1. が必要なだけです。 main パラメータを package.json と異なる場合、パッケージのエントリポイントは index.js をそのルート・フォルダに追加します。例えば、人々はしばしばエントリーポイントを lib/index.js または lib/<packagename>.js この場合、対応するスクリプトは次のように記述しなければなりません。 mainpackage.json .
  2. として2つのスクリプトを持つことはできません。 main は、単にエントリーポイントである require('yourpackagename') を曖昧さなく定義する必要があります。