質問: いつもお世話になっております。 質問させて頂きたい事がありますので投稿させて頂きます。 node.jsでプログラム開発を勉強しております。 環境 ホストOS Mac OSX ゲストOS CentOS6 vagrant VirtualBox npmを利用し、Node.jsをインストール 構築したばかりのvagrant環境(ホストOS) ``` npm install request ``` しようとすると、 > > npm WARN ENOENT ENOENT: no such file or directory, open '/インストール先path/package.json' > > npm WARN EPACKAGEJSON /home/vagrant No description > > npm WARN EPACKAGEJSON /home/vagrant No repository field. > > npm WARN EPACKAGEJSON /home/vagrant No README data > > npm WARN EPACKAGEJSON /home/vagrant No license field. > > > と表示されました。 モジュールのインストール自体は正常にされている様です。 こちらの警告は修正必要なものでしょうか。 package.jsonはパッケージ管理の為に用意するもの。 その他もパッケージ管理の為に自身で記述するものということで間違いありませんでしょうか。 ご存知の方がいらっしゃいましたらご教授頂けますと幸いです。 ※追記 npm install request ローカルインストールの場合です。 その後、 npm install -g request グローバルインストールの場合は警告なくインストールが完了しました。
回答: ### はじめに **package.json**ファイルは、これから作成するものの仕様です。 主に次の情報を管理します。 * 公開時の名前、バージョン、概要、リポジトリなど * 作成するプログラムが、どのパッケージに依存しているか 「npm WARN EPACKAGEJSON〜」から始まる4つの警告は、作成するものをパッケージとして公開しないのならば無視しても良いです。 ただし、**package.json**ファイルは、作成した方が良いです(理由は後述)。 ### この警告を消すには 警告が表示されるが気分的に嫌だと思います。 "公開しない"を明示した **package.json** ファイルを作成すれば消せます。 ``` { "private": true } ``` ### インストールしたパッケージの情報(依存情報)を記録する パッケージをインストールする時に`--save`オプションを付けると **package.json** へ依存情報を記録します。 後々、インストールしたパッケージとバージョンを確認するためにも、常に記録した方が無難です。 ``` $ npm install request --save ``` 結果の例として以下のようになります。 ``` { "private": true, "dependencies": { "express": "^4.13.4" } } ``` プロジェクト毎(ローカル)にインストールしたパッケージは、プロジェクトのルートディレクトリ直下に、**node_modules**ディレクトリが作成され、格納されます。 **package.json**ファイルに依存情報がある場合、`npm install`だけで不足しているパッケージをインストール出来ます。 ### 初期に必要なファイルを揃えるには `npm init`コマンドにより対話形式で**package.json**ファイルを作成出来ます。 対話形式が面倒ならば`-y`(yes)オプションを付けると初期値で作成出来ます。 ``` $ npm init # または $ npm init -y ``` ### おわりに 警告なのに、対応の判断材料が記載されていないので困りものですよね。 ささっと検証で動かしたいだけなら`npm init`より手打ちのシンプルなのが良さそうです。