質問: **「npm install」した時(?)に作成される「package.json」は、「Source Map」ですか?** ・「Source Map」の一種? ・依存関係を記述しているだけなので「Source Map」とは呼ばない? **仮に「Source Map」ではないとしたら何に該当するのでしょうか?** ・「package.json」は、「package.json」?? --- **追記** ・SourceMapについて、ネットで検索したら、「元のソースと生成されたコードの細かな対応関係情報を持ったJSONファイル」と書かれていました。 ``` { version : 3, file: “out.js”, ``` ・SourceMapを実際に見てみたいと思い、「コンパイル時にコードと一緒に生成される」と書かれていたので、「npm install」した際に、出来た(?)「package.json」だろうと予測 ・「package.json」を確認してみたら、「"version":」「"files":」の文字があったので、きっとこれがSourceMapだろうと思い、ネットで検索 ・しかし、「package.json」「SourceMap」で検索するも全くヒットしない ・もしかしたら違うのかも、だったら「package.json」は何と呼ぶのだろう、と思い質問 という流れです
回答: npm の package.json は、パッケージのメタ情報を記述する npm 独自のファイルです。package.json のひな形を作成する `npm init` や、インストールと同時に依存パッケージとして記録する `npm install xxx --save` をした際にも自動的に書きこまれますが、パッケージの作者が自分で決めてテキストエディタで編集するような項目も多数あります。 一方で Source Map は、元となるファイル(群)にコンパイル・圧縮・難読化などを施した際に、元ファイル hoge.js の3行6列目が処理後の123文字目に対応する、といった情報が記載されたファイルで、これはコンパイルなどの処理を行うプログラムが生成する・・・というのはご存知かと思います。 パッケージマネージャである npm 自体はそのような処理は行わないので Source Map を生成することはありませんし、利用することもありません。 Source Map の実例としては、例えば jQuery は jquery-x.y.z.min.js と一緒に、その Source Map も配布しています。あるいは Source Map の生成に対応した Closure Compiler などで実際に試してみるといいかもしれません。 ``` $ java -jar closure-compiler.jar \ --js test.js \ --js_output_file test.min.js \ --create_source_map test.min.map ``` > > パッケージ管理の役割は「何をインストールするかを単に記録しているだけ?」。そこからまとめて何かを生成するような処理は行っていないのでしょうか? > > > そうです。 オプションなしの `npm install` を実行すると、package.json に書かれた情報を元に必要なパッケージを探し、ダウンロード・インストールを行います。この時、それらが依存するパッケージもやはりそれぞれの package.json に書かれているので、同じことを繰り返します。それ以外のファイルを解析したり、コンパイルしたり、ということは行いません。 package.json では `npm install` 後に実行する処理を指定できるので、自動的にコンパイルなどを行うことも可能ですが、npm 自身が勝手に行うことはありません。