1. ホーム
  2. node.js

[解決済み] package.jsonにカスタムメタデータやコンフィグを追加したいのですが、有効でしょうか?

2023-04-28 23:15:36

質問

アンダースコアで始まるカスタムキーを持つ package.json ファイルを見たことがあります(場所を覚えていません)。

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "express": "2.4.7"
    , "jade": ">= 0.0.1"
  }
  , "_random": true
}

これは許可されているのですか? それはまだ有効ですか? これが許可されている場合、ルールに関するドキュメントはありますか?

ありがとうございます!

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

tl;dr :

  • はい。 を使用することができます。 にカスタムエントリを追加することができます。 package.json .
  • キー名を選択します。
    • 定義されていない (詳細は後述)
    • 予約不可 将来使用するため(詳細は後述)
    • 避ける 接頭辞 _$
    • で、できれば を使用する。 シングル トップレベルキー を含む ネスト カスタムエントリ .

例) ドメインを所有している場合 example.org を所有している場合、カスタム random キーを次のように格納できます。 で逆ドメイン名表記されたトップレベルキーの中に _ に置き換えて . で、該当する場合は - (コメント参照) (例 org_example ):

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "express": "2.4.7"
    , "jade": ">= 0.0.1"
  }  
  , "org_example": {
      "random": true
  }
}

このようなカスタムプロパティを読み込むには、以下のテクニックを使います。

require("./package.json").org_example.random // -> true


npm 's package.json ファイルフォーマットは、ほとんど CommonJS パッケージ仕様 :

については カスタムキーの選択 については CommonJSのパッケージ仕様 に記載されています(強調)。

以下のフィールドは 予約済み に対して 未来 を拡張します。 build , default , email , external , files , imports , maintainer , paths , platform , require , summary , test , using , downloads , uid .

<ブロッククオート

パッケージ記述子仕様の拡張は 一般的なパッケージ管理に関連する意味を持たない無難な名前でプロパティの名前間隔を空けることにより、将来の標準的な名前の衝突を避けるよう努力する。 .

<ブロッククオート

以下のフィールドは パッケージレジストリ用に予約されています。 で、その裁量で使用することができます。 id , type . すべて で始まるプロパティは _ または $ も予約されています。 をパッケージレジストリの裁量で使用することもできます。