npm install --save-dev の --save-dev ってなんだ?と思って調べたのでメモ。
--save-dev が気になったきっかけ
Vue.jsのアプリを簡単にS3にアップロードする方法として以下のサイトを参考にしました。(とても簡単で便利)
こちらのサイトの手順に従い、
npm install --save-dev を実行して gulp をインストールし、
gulp publish を実行したところ、、、
-bash: gulp: command not found
あれ、動かない。
--save-devってなに?
--save-dev はローカルインストールするためのコマンドです。
正確に言うと npm install -gがグローバルインストールのコマンドで、
-gを付けないとローカルインストールになります。
ローカルインストールしたパッケージをどう実行するの?
ローカルインストールの場合は、
カレントディレクトリにnode_modulesディレクトリが作られ、そこにパッケージがインストールされます。
そのため、インストールした後は、node_modules/.binディレクトリの配下にあるパッケージを実行する必要があります。
./node_modules/.bin/gulp publish
どういうときに--save-dev をした方がいいの?
あまりnpmを使うことがなかったこともあり、
マニュアルのコピペでグローバルインストールしかしてなかったのですが、
以下の記事を読んでみると、なるべくローカルインストールした方が良さそうですね。
[Node.js] npm installするときはどのパッケージもローカルインストールで十分
もう少し補足すると、
--save-dev すると、自動で package.jsonの devDependencies に追記されます。
そして dependencies には追記されません。
git cloneでクローンしてきて、必要なパッケージをインストールするときに
npm install --productionとすると、devDependenciesはインストールされないようです。
逆に dependencies に入っているとインストールされてしまうので、
githubにソースを公開するときは使い分けできていると親切そうですね。