475

シンプルな package.json ファイルがあり、コメントを追加したいと考えています。これを行う方法はありますか、またはこれを機能させるためのハックはありますか?

{
  "name": "My Project",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x",
    "mongoose": "3.x"
  },
  "devDependencies" :  {
    "should": "*"
    /* "mocha": "*" not needed as should be globally installed */
  }
}

上記のコメントの例は、npm が中断するため機能しません。// スタイルのコメントも試しました。

4

20 に答える 20

523

これは、 Node.js メーリング リストで最近議論されました。

npm を作成した Isaac Schlueter によると:

... "//" キーは npm によっていかなる目的にも使用されることはなく、コメント用に予約されています ... 複数行のコメントを使用する場合は、配列または複数の "//" を使用できますキー。

通常のツール (npm、yarn など) を使用すると、複数の「//」キーが削除されます。これは生き残ります:

{ "//": [
  "first line",
  "second line" ] }

これは生き残れません:

{ "//": "this is the first line of a comment",
  "//": "this is the second line of the comment" }
于 2013-01-08T18:36:43.673 に答える
125

免責事項: おそらくこのハックを使用しないでください。以下のコメントを参照してください。


JSON にコメントを追加するための別のハックを次に示します。以来:

{"a": 1, "a": 2}

に等しい

{"a": 2}

次のようなことができます:

{
  "devDependencies": "'mocha' not needed as should be globally installed",
  "devDependencies" :  {
    "should": "*"
  }
}
于 2013-08-04T22:18:33.233 に答える
14

重複したキーが上書きされるという事実はいつでも悪用できます。これは私がちょうど書いたものです:

"dependencies": {
  "grunt": "...",
  "grunt-cli": "...",

  "api-easy": "# Here is the pull request: https://github.com/...",
  "api-easy": "git://..."

  "grunt-vows": "...",
  "vows": "..."
}

ただし、JSON がキーの重複を許可するかどうかは明確ではありません ( 「JSON 構文でオブジェクト内のキーの重複が許可されますか? 」を参照してください。npm で動作するようですので、リスクを負います。

推奨されるハックは、"//"キーを使用することです ( nodejs メーリング リストから)。ただし、テストしたところ、「依存関係」セクションでは機能しませんでした。また、投稿の例では複数の"//"キーが使用されています。これは、npm が重複したキーを持つ JSON ファイルを拒否しないことを意味します。言い換えれば、上記のハックは常に問題ないはずです。

更新:重複したキーのハッキングの厄介な欠点の 1 つは、npm install --saveすべての重複が静かに削除されることです。残念ながら、それは非常に簡単に見落とされ、あなたの善意のコメントは消えてしまいます。

ハッキングは依然として最も"//"安全であるように思われます。ただし、複数行のコメントも によって削除されnpm install --saveます。

于 2014-05-21T18:32:57.743 に答える
10

面白いハックのアイデアがあります。

たとえば、ファイルpackage.jsondependenciesのコメント区切りおよびdevDependenciesブロックとして適切な npm パッケージ名を作成します。x----x----x

{
    "name": "app-name",
    "dependencies": {
        "x----x----x": "this is the first line of a comment",
        "babel-cli": "6.x.x",
        "babel-core": "6.x.x",
        "x----x----x": "this is the second line of a comment",
        "knex": "^0.11.1",
        "mocha": "1.20.1",
        "x----x----x": "*"
    }
}

*:ブロックのように、有効なバージョンの最後のコメント区切り線を追加する必要があります。

于 2016-05-13T10:07:55.240 に答える
7

package.json/内のコメントに対する私の見解は次のbower.jsonとおりです。

package.json.js実際のファイルをエクスポートするスクリプトを含むファイルがありますpackage.json。スクリプトを実行すると、古いものが上書きpackage.jsonされ、どのような変更が行われたかがわかります。これは、行われた自動変更を追跡するのに最適ですnpm。そうすれば、使用したいパッケージをプログラムで定義することさえできます。

最新の Grunt タスクはこちら: https://gist.github.com/MarZab/72fa6b85bc9e71de5991

于 2015-02-07T09:27:23.150 に答える