ここ数年、JavaScriptやNode.jsプロジェクトに取り組んでいる場合は、プロジェクトとモジュール用のnpmの構成ファイルであるpackage.jsonファイルに出くわしたことでしょう。 この投稿では、典型的なpackage.jsonファイルにある最も重要なキーと値のいくつかを探ります。

プロジェクトの開始

npmパッケージマネージャーを使用してプロジェクトを開始する最も簡単で最速の方法は、initコマンドと-yフラグを使用することです。これは、すべての質問にはいと答えます。

$ npm init -y

プロジェクトの名前は、現在のフォルダーの名前と同じになります。

initコマンドは、次のようなJSONコンテンツを含むpackage.jsonファイルを現在のディレクトリに書き込みます。

{
  "name": "hello-alligator",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

最初のpackage.jsonファイルの各キーを調べてみましょう。

  • name :プロジェクトの名前。すべて小文字でURLセーフである必要があります。 名前の前にスコープ(例: @ angle / angle-cli )を付けることができ、プロジェクトが非公開の場合はオプションですが、プロジェクトを公開する場合は名前が必須であり、一意である必要がありますnpmリポジトリにあります。
  • version node-semverが理解できるバージョン番号。 これは、プライベートモジュールではオプションであり、パブリックモジュールでは必須であり、非常に重要です。
  • description :プロジェクトの説明。 これはオプションであり、プロジェクトをリポジトリで簡単に見つけることができる場合に役立ちます。
  • main :プロジェクトのエントリファイル。
  • scripts scriptsキーは、スクリプト名をキーとして、コマンドを値として持つオブジェクトを想定しています。 これは、コマンドラインから直接実行でき、ローカルサーバーでプロジェクトを開始したり、本番用にビルドしたり、テストを実行したりするなど、あらゆる種類のスクリプトを指定するのに役立ちます。 scriptsは、一般的なpackage.jsonファイルで最も手動で変更を加える場所である可能性があります。
  • keywords :npmリポジトリでモジュールを見つけるのに役立つキーワードの配列。
  • author :作成者フィールドには、nameemail、およびurlのキーを持つオブジェクトが必要です。 これにより、人々はプロジェクトの所有者と簡単に連絡を取ることができます。
  • license SPDX識別子を使用したライセンス名が必要です。 デフォルトはISCライセンスであり、MITも人気のあるライセンスの選択肢です。 UNLICENSEDは、プライベートでクローズドソースのプロジェクトにも使用できます。

依存関係の管理

npmの主な強みは、プロジェクトの依存関係を簡単に管理できることです。 したがって、プロジェクトのpackage.jsonファイルが主にプロジェクトの依存関係の指定に集中しているのは当然のことです。 通常の依存関係がありますが、 devDependencies peerDependencies optionalDependencies bundledDependenciesもあります。 それらを調べてみましょう:

  • 依存関係:通常のプロジェクトの依存関係。 これは、依存関係の大部分が存在する可能性が最も高い場所です。 $ npm install my-dependencyを使用して、このような依存関係をプロジェクトに追加します。
  • devDependencies :プロジェクトで作業しているときにのみ役立つ依存関係。 たとえば、テストライブラリとトランスパイラーはほとんどの場合devDependenciesとして追加する必要があります。 installコマンドでnpmの--save-devフラグを使用してdevDependencyを追加します。
  • optionalDependencies :npmによってオプションとして扱われるべき依存関係。 つまり、オプションの依存関係を満たせない場合でも、npmが文句を言ったり、インストールに失敗したりすることはありません。 installコマンドで--save-optionalを使用して、オプションの依存関係をインストールします。
  • bundledDependencies :プロジェクトにバンドルされるパッケージ名の配列が必要です。 バンドルされた依存関係のリストにも依存関係を追加するには、installコマンドで--save-bundleフラグを使用します。
  • peerDependencies :ピア依存関係は、プロジェクトが依存するモジュールを指定するのに役立ちます。 このように、一部のピア依存関係が欠落している場合、npmは警告を発行します。

おそらく前に見たように、依存関係はさまざまな形式を受け入れて、依存関係に使用できるバージョンまたはバージョンの範囲を指定できます。 例えば:

  • 2.4.2:正確にバージョン2.4.2
  • ^ 2.4.2:バージョン2.4.2と互換性のある最新バージョン
  • 〜2.4.2:2.4.2、2.4.3、2.4.4、…などのバージョンで動作します
  • 〜2.4:これは2.4、2.5、2.6などのバージョンで機能します…
  • 2.4.x:パッケージの2.4バージョンの任意のパッチバージョンで動作します
  • 2.x:パッケージの2バージョンのマイナーバージョンで動作します
  • > = 2.4:2.4以上のバージョン。 <、<=または>を使用することもできます
  • 2.4.2 3.1.1:バージョン2.4.2とバージョン3.1.1の間のすべてのバージョン

各範囲を||で区切ることにより、複数の可能なバージョン範囲を指定することもできます。

より便利な構成キー

オプションでプロジェクトのpackage.jsonファイルに入れることができる構成は他にもあるので、最も便利な構成のいくつかに簡単に触れてみましょう。

  • browser :サーバーではなくブラウザーで使用することを目的としたプロジェクトには、mainの代わりにブラウザーキーを使用します。
  • private :このキーがtrueに設定されている場合、プロジェクトをnpmリポジトリに公開することはできません。 これは、プロジェクトを誤って世界に公開するのを防ぎたい場合に役立ちます。
  • engines enginesを使用して、プロジェクトが動作するNode.jsやnpmの特定のバージョンを指定します。 nodeおよび/またはnpmのキーと、バージョンの範囲を指定する依存関係の値のように見える値を持つオブジェクトを取ります。
  • ホームページ:プロジェクトのホームページのURL。
  • バグ:問題やバグを報告できるURL。 これは多くの場合、プロジェクトのGithub問題ページへのURLになります。
  • files :このオプションのキーは、プロジェクトに別のプロジェクトへの依存関係が追加されたときに含まれるファイルの配列を想定しています。 ファイル名/パスはグロブパターンを使用でき、filesキーが指定されていない場合、デフォルト値の["*"]が使用されます。これは、すべてのファイルが含まれることを意味します。 ただし、.gitnome_modulesなどの特定のファイル/フォルダーは常に無視されます。

これにより、package.json構成に何を入れることができるかについてのかなり良い一般的なアイデアが得られるはずです。 可能なすべての構成キーの詳細については、公式ドキュメントを参照することもできます。