package.json フォーマッター&キーソートツール
ガイド
package.json フォーマッター&キーソートツール
ペーストする任意の package.json を入力エリアにペースト(または「例を試す」をクリックしてツールを実行してみましょう)。
使用方法
- あなたの
package.jsonに入力エリア(または「例を試す」をクリックしてツールを実行してみましょう)。 - 好むインデントスタイルを選択してください:2スペース、4スペース、またはタブ。
- 必要に応じて、依存関係グループのアルファベット順に並べ替えおよびスクリプトのライフサイクル意識による並べ替えを有効にします。
- 「非標準フィールドを削除」を切り替え、不明なトップレベルキーを削除したい場合に使用します。
- 右側のフォーマットされた出力およびエラー、警告、ノートを含む検証レポートを確認します。
- 結果をコピーまたは直接としてダウンロードします
package.json.
機能
- カナディアンキー順序 – トップレベルフィールドを標準npm順序(name、version、description、scripts、dependenciesなど)に並べ替え、diffやコードレビューが一貫性を保ちます。
- 必須および推奨フィールドのチェック – 欠落している
name/versionおよび推奨項目(例:description,licenseと、repository. - バージョン範囲の検証 – すべての項目が
dependencies,devDependencies,peerDependenciesと、optionalDependenciesが有効なsemver範囲(キャレット、チルダ、範囲、ワークスペースプロトコルなど)を使用していることを確認します。 - 依存関係の並べ替え – すべての依存関係グループをアルファベット順に並べ替えることで、ロックファイルに優しい出力を実現します。
- ライフサイクル意識のスクリプト並べ替え – 関連するライフサイクルトリプル(pre/main/post)をグループ化し、残りをアルファベット順に並べ替えます。
preX/X/postXnpmのライフサイクルスクリプトをグループ化し、その後残りのものをアルファベット順に並べる。 - 非標準フィールドの削除 – 未知のトップレベルキーを削除してマニフェストを軽量化、または保持(それらは底部に移動されます)。
- インデント制御 – 2スペース、4スペース、またはタブ文字を使用して、プロジェクトのフォーマットルールに合わせた出力を作成します。
- クライアントサイドのみ – パース、検証、並べ替えはすべてブラウザ内で実行され、何のデータも送信されません。
よくある質問
-
package.json のキーの順序がなぜ重要ですか?
JSON仕様はオブジェクトを無順序として扱いますが、実際にはキーの順序は人間の読みやすさ、プルリクエストにおけるdiffの明確さ、およびさまざまなツールがファイルを表示する方法に影響を与えます。カナディアン順序(npm CLIによって普及し、エコシステムツールによって広く採用されている)は、識別フィールド(name、version)を最初に配置し、その後メタデータ、エントリポイント、そして依存関係および設定ブロックを配置します。一貫した順序はマージ衝突を減少させ、マニフェストをスキャンしやすくなります。
-
semver とは何ですか?バージョン範囲の構文がなぜ重要ですか?
セマンティックバージョニング(semver)は、バージョンを MAJOR.MINOR.PATCH 3つの三重に定義し、各セグメントが示す意味について厳格なルールを定めます。キャレット(^)、チルダ(~)、および比較演算子(>=、<)はパッケージマネージャーに、どの未来バージョンを受け入れるかを示し、契約を破ることなく、あなたが受け入れる範囲を示します。無効または曖昧な範囲は、再現可能なビルド失敗や予期しないアップグレードを引き起こす可能性があります。範囲を事前に検証することで、ロックファイルに到達する前に誤字を検出できます。
-
package.json における非標準フィールドとは何ですか?
npmマニフェスト仕様は、トップレベルフィールドの固定語彙(name、version、scripts、dependencies、enginesなど)を定義し、その意味を記述しています。ツールは頻繁に独自のトップレベルキーを追加します(ESLint設定、Huskyフック、ビルドツール設定など)。これらは技術的に有効なJSONですが、npm仕様の範囲外にあります。一部のプロジェクトは便利のためにこれらを保持し、他のプロジェクトはマニフェストに焦点を当てて、専用の設定ファイルに移動します。
-
npmライフサイクルスクリプトをアルファベット順に並べ替えするのではなく、グループ化する理由は何ですか?
npmはライフサイクルスクリプトを定義された順序で実行します:preinstall が install 以前、prepublish が publish 以前などです。スクリプトブロックを読むとき、関連するライフサイクルトリプル(pre/main/post)をグループ化することで、実行フローを一目で理解できます。純アルファベット順に並べ替えすると、これらのペアを散らばせます(例:'postbuild' を 'build' から遠く離す)ことで、何が実行されるかを理解するのが難しくなります。
