拡張子が同じ .json でも、コメントを書けるファイルと書けないファイルがあります。このページでは、tsconfig.json・package.json・wrangler.jsonc を比べて、その違いが何で決まるかを確かめます。
tsconfig.json は通る
tsconfig.json に、行コメント・ブロックコメント・末尾カンマを入れて、tsc --showConfig に読ませます。
{
// コメント
"compilerOptions": {
/* block */
"noEmit": true,
"strict": true,
},
"files": ["./a.ts"]
}
拡張子は .json のままなのに、エラーになりません。ただし、これは「tsc が受け付けた」という実測です。TypeScript の公式文書のうち、tsconfig.json の handbook のページでは、コメントを書けるという記述を見つけられませんでした。仕様として保証されているのかは、確認できていません。
package.json は通らない
package.json の先頭に、同じように行コメントを入れます。
{
// コメント
"name": "x",
"version": "1.0.0"
}
npm と pnpm は、Volta(Node.js のバージョン管理ツール)の入口を通さず、実体を直接動かしました。Node.js 自身も、require で読ませました。
npm・pnpm・Node.js の 3 つとも、package.json のコメントを受け付けませんでした。npm は「package.json は本物の JSON でなければならない」という趣旨の案内も出しています(この出力の 4 行目)。
Volta の入口(npm コマンドの手前で動く仕組み)を通すと、npm に届く前に Volta error: Could not parse project manifest で止まります。エラーを出しているのは Volta の側です。
違いを決めているのは読む側
3 つの結果を並べます。
| ファイル | 読む側 | コメント |
|---|---|---|
tsconfig.json |
tsc | 通った |
package.json |
npm・pnpm・Node.js・Volta | 通らなかった |
wrangler.jsonc |
wrangler | このリポジトリで実際にコメントを書いている |
wrangler.jsonc は、拡張子が .jsonc です。このリポジトリの website/wrangler.jsonc には、// のコメントが何行も入っています。
VS Code にも、同じ考え方の仕組みがあります。VS Code は「JSON with Comments」というモードを持ち、settings.json などの設定ファイルをこのモードで扱います。
When in the JSON with Comments mode, you can use single line (
//) as well as block comments (/* */) as used in JavaScript.
出典: https://code.visualstudio.com/docs/languages/json(取得日: 2026-09-22)
ファイルの中身は、どれも「JSON のように見えるテキスト」です。コメントを許すかどうかは、ファイルの拡張子ではなく、そのファイルを読むプログラム(パーサー)が、標準の JSON か、コメントを足した派生かで決まっています。
package.json については、npm・pnpm・Node.js のいずれも標準の JSON として読むので、書けません。「package.json は書けない」というより、「package.json を読む道具が、標準の JSON としてしか読まない」と言うほうが正確です。