npmってなんですか?
とりあえず、「what is npm?」でググってみました。
what is npm?
世界一大きいソフトウェアライブラリ
npm
は世界で最も大きいソフトウェアライブラリです。- 800000以上のパッケージが登録されています。
- OSS開発者は開発したソフトウェアをシェアするために
npm
を使用しています。 - たくさんの団体が開発の管理に
npm
を使っています。
ソフトウェアパッケージマネージャー
npm
はNode Package Managerの略です。- 全てのnpmパッケージは
package.json
というファイルで管理されます。 package.json
はJSON形式で記述されなければなりません。package.json
には最低限nameとversionの情報がなければなりません。
多分、イメージとしてはJavaでいうgradleやmaven、Rubyのgemみたいなもの・・かな?
npmを使ってみる
どんなものなのかを知っただけではその技術や知識を身につけたとは言えません。
ので、実際にnpmのコマンドを叩きつつ学んでいきたいと思います。
なお、 こちら が本家のドキュメントになりますが、見ての通りたくさんのコマンドがありますので個人的によく使うコマンドに絞って紹介していきます。
npm init
npm init
は、npmの初期化コマンドです。
npm init
を実行するとpackage.json
が作成されます。
なお、実際にコマンドラインでnpm init
を実行すると、packge nameやversionなどを聞かれますが、わからなければひたすらEnterキーを連打すれば大丈夫です。
最後に、Is this OK? (yes)という表示が出たら、yesとタイプしてEnterを押せば完了です。
ここまで完了すると以下のようなファイルが作成されていると思います。
{ "name": "javascript", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
なお、一番上の"name":"javascript"
については、npm init
を実行したディレクトリの名前となりますので、実行環境によって差異が発生します。
オプション
一応オプションです。
-- y
後出しになりますが、npm init --y
とすれば上記の質問は全てスキップされます。
(全て単にEnterを押した時と同じ挙動になります。)
npm install
それではpackage.json
ができたところで実際に何かパッケージをインストールしてみましょう。
基本の使い方
npm install <package name>
の形式で、<package name>
にはインストールしたいパッケージ名を入力します。例えば、
npm install lodash
とすると、lodash
というパッケージがインストールできます。
インストールが完了すると、package.json
に下記のような追記がされます。
"dependencies": { "lodash": "^4.17.20" }
また、package.json
と同じディレクトリに、node_modulesというディレクトが作成され、以後npm install
されたパッケージはこのディレクトリに追加されていきます。
オプションなど
--save-dev
--save-dev
を付けると、develop環境のみで使用可能な状態となるようパッケージがインストールされます。
実際に、npm install lodash --save-dev
と実行すると、
"devDependencies": { "lodash": "^4.17.20" }
このように、dependencies
ではなくdevDependencies
にインストールされていることがわかります。 *1
-g
-g
をつけるとグローバルインストールとなります。
npm install lodash -g
グローバルにインストールされると、どこでもこのパッケージが使用できるようになります。
ただ、一般的にプロジェクトで使用するだけのパッケージはグローバルインストールしない方がいいでしょう。
他方で、例えばコマンドラインをインストールする(今回のnpm
コマンドなど)はグローバルインストールするのが良いかと思います。
パッケージを指定しない場合
単に、
npm install
とすることもできます。
この場合、そのプロジェクトに必要な・・言い換えるとpackage.json
に記述されている各種パッケージがインストールされます。
例えば、チーム開発をしている場合に他の方がパッケージを追加し、package.json
をgithubなどの共有リポジトリにあげた後などに使用するかと思います。
エイリアス
npm i
npm add
最後にエイリアスも紹介しておきます。
エイリアスとは別名のことです。つまり、
npm install lodash npm i lodash npm add lodash
上記の3つのコマンドは全て同じ意味になります。
npm uninstall
npm uninstall
は、コマンド名の通り、パッケージのアンインストールを行います。
基本の使い方
npm uninstall lodash
もし、「このパッケージ不要だな」と思ったらこちらのパッケージを使用しましょう。
間違っても、node_moduleディレクトリから直接削除しないように。
npm uninstall lodash
を使用すれば安全にアンインストールができます。
オプション
--save
dependencies
からパッケージを削除します。
--save-dev
devDependencies
からパッケージを削除します。
--save-optional
optionalDependencies
からパッケージを削除します。
--no-save
pakcage.json
ファイルからは該当パッケージを削除しません。
→node_modulesディレクトリからは削除されますが、package.json
には残ったままになります。(どういうシーンで使うのかはよくわかりません。 )
npm update
npm update
を使用すると、インストール済みのパッケージをアップデートすることができます。
npm update <package_name>
特定のパッケージをアップデートする場合は上記のコマンドを実行します。
また、下記のように特にパッケージを指定しなければ、全てのパッケージがアップデートされます。
npm update
npm help
ヘルプを見ることができます。
特定のコマンドのヘルプを見る場合はnpm <command> -h
とします。
npm install -h
気になったエラー(ワーニング)
npm WARN <name@version> No repository field.
以下を追加することで解消されました。
"repository": { "private": true }
(この記事が参考になります。)
終わりに
とりあえず、基本的な使い方として、init
install
uninstall
をまとめてみました。
他にもたくさんのコマンドがあるので、使う機会があれば適宜記事にしたいと思います。
参考
- CLI Commands | npm Docs
- Introduction to npm and basic npm commands | by C Dharmateja | Beginner's Guide to Mobile Web Development | Medium
*1:dependenciesとdevDependenciesについてはそのうちまとめます。