Help us understand the problem. What is going on with this article?

勉強メモ/npmの使い方(node.js=v0.11.16, npm=2.3.0, 2015-03時点)

More than 1 year has passed since last update.

2015-03時点での、npmの使い方の勉強メモ。

勉強環境:

$ node --version
v0.11.16

$ npm --version
2.3.0

参考:

パッケージインストールの考え方:

  • ローカルインストール
    • カレントディレクトリの node_modules 以下にパッケージをインストール。
    • 開発プロジェクト固有で依存するパッケージをインストールしたい時に使いやすそう。
  • グローバルインストール
    • システム共通の場所にパッケージをインストール。
    • ビルドツールなど、システム全体で利用するツール・コマンド類をインストールしたい時はこっちも便利。

パッケージのインストールとアンインストール

ローカルインストールの流れ

  1. npm initpackage.json を生成しておく(オプション。開発プロジェクト固有のパッケージインストール前提になるなら、最初にやっておいたほうが良いかも)。
    • 名前, バージョン, 説明, Gitリポジトリ, キーワード, ライセンスなどひと通り聞かれる。全部デフォルトのままにして後から編集しても良い。
  2. npm install パッケージ名 でインストール。
    • デフォルトでカレントディレクトリの node_modules 以下にパッケージをインストール。
    • package.json に記録しておきたければ、npm install パッケージ名 --save を実行。
    • --save-dev / --save-optional というオプションもある。 --save との違いについては後述

ローカルインストールしたパッケージを削除

  1. npm uninstall パッケージ名
    • package.json からも依存関係削除したければ、npm uninstall パッケージ名 --save(or --save-dev or --save-optional) を実行。
    • npm rm でも一緒。

インストールしたパッケージを確認

  1. npm list (or ls or la or ll) で、デフォルトだとローカルのパッケージ確認。設定でglobalインストールしたのも確認できるっぽい(今回は試さなかった)。

グローバルインストール/グローバルアンインストール

  1. npm install -g パッケージ名
  2. npm uninstall -g パッケージ名

--save / --save-dev / --save-optional の違い

  • --savepackage.jsondependencies に追記される。
  • --save-devpackage.jsondevDependencies に追記される。
  • --save-optionalpackage.jsonoptionalDependencies に追記される。

それぞれの違いだが、package.jsonがモジュールとして外部に公開し、他の人がnpm installした時に影響する。

他の人が npm install した時に、dependencies に指定したパッケージが全てインストールされる。

devDependencies に追記したものは開発時にのみ使うパッケージを指定するのに使う。そのパッケージの利用者にとっては不要で、開発者のみが使うため、利用者が npm install パッケージ名 するときはこの依存パッケージはインストールされない。もし devDependencies もインストールしたい場合は、--dev 設定を有効化(これはnpm installのオプションではなく、 npm help 7 config にあるようにnpmの設定である)して、npm install パッケージ名 --dev とする。

ただし、利用者がpackage.json含めたソースコード全体をgitなどからcloneして開発する = 開発者と同等の立場として、追加パラメータ無しで package.json のあるディレクトリで npm install とだけした場合は、開発者の立場になるわけなので、devDependencies もインストールされる。というか、依存関係は全てインストールされるらしい。 --production つければ、package.jsonのところで npm install --production なら devDependencies はインストールされない。

dependenciesdevDependencies の使い分けだが、パッケージやプロジェクトが実行時に必要となるのを dependencies に設定し、ビルド時だけしか使われないようなビルドツール・ライブラリなどは devDependencies に入れておくと良さそう。

optionalDependenciies に追記したものは、通常のnpm installでインストールされるが、インストールに失敗してもスルーされる。正直、使いドコロがよくわからない。

他にもdependencyの種類には何種類かあるため、package.jsonのドキュメントを参照のこと。

参考:

各種ファイルのパスについて

# 基本的な説明は `npm-folders(5)` 参照
$ npm help 5 folders

# ローカルインストール先のディレクトリ確認
$ npm root

# ローカルインストール先の、コマンドディレクトリ(bin)確認
$ npm bin

# グローバルインストール先のディレクトリ確認
$ npm -g root

# グローバルインストール先の、コマンドディレクトリ(bin)確認
$ npm -g bin

ソースコードを取得した後、package.jsonから依存関係をインストールしたい

$ ls
... package.json ...

$ npm install

dependencies, devDependenciesが両方インストールされる。devDependenciesを除外したい場合は npm install --production とする。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした