よく利用する npm コマンド

よく利用する npm ( Node Package Manager ) コマンドをまとめてみました。
エイリアスが多数ありますが一番短くて入力しやすいものを併記しています。

## 初期化

カレントディレクトリに `package.json` が作成されます。

```
npm init
```

コマンドを入力するとプロジェクト名やバージョンなどを聞かれるので答えていきます。
`package name` には、その時のカレントディレクトリの名前が入ります。

```
package name: (test)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
```

最後にこの内容で書き込んでよいか尋ねられるので、`y` を入力すると `package.json` が作成されます。

```
About to write to C:\...\package.json:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this OK? (yes)
```

質問に答えるのが面倒な場合は以下のコマンドを入力すると `package.json` が作成されます。

```
npm init -yes
npm init -y
```

## バージョン確認

### npm のバージョン確認

```
npm -version
npm -v
```

### パッケージのバージョン確認

```
npm パッケージ名 -version
npm パッケージ名 -v
```

## パッケージのインストール

```
npm install パッケージ名
npm i パッケージ名
```

オプションのエイリアスは他にも `add` も指定可能です。

```
npm add パッケージ名
```

### 複数インストール

パッケージ名をスペース区切りで記述します。

```
npm install パッケージ1 パッケージ2 パッケージ3
npm i パッケージ1 パッケージ2 パッケージ3
```

### バージョンを指定してインストール

パッケージ名の後にバージョン番号を記述します。

```
npm install パッケージ名@1.2.3
npm i パッケージ名@1.2.3
```

### グローバルにインストール

```
npm install -global  パッケージ名
npm install -g パッケージ名
```

### 依存関係を package.json に書き込まないでインストール

`package.json` に書き込まない場合に指定します。

```
npm install -no-save パッケージ
npm i -no-save パッケージ
```

### 依存関係を package.json に書き込んでインストール

#### dependencies

`package.json` の `dependencies` にパッケージ名とバージョンが追記されます。

```
npm install -save パッケージ
npm i -S パッケージ
```

#### save-optional

`package.json` の `optionalDependencies` に依存するけれど必須ではないパッケージとして追記されます。

```
npm install -save-optional パッケージ
npm i -save-optional パッケージ
```

#### save-dev

`package.json` の `devDependencies` に開発に使用するパッケージとして追記されます。

```
npm install -save-dev パッケージ
npm i -D パッケージ
```

### package.json に記述されたすべてのパッケージをインストール

```
npm install
npm i
```

### package-lock.json に記述されたすべてのパッケージをインストール

```
npm ci
```

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

```
npm uninstall パッケージ名
npm r パッケージ名
```

オプションのエイリアスは他にも `unlink` `un` `remove` `rm` も指定可能です。

```
npm unlink パッケージ
npm un パッケージ
npm remove パッケージ
npm rm パッケージ
```

### 複数のパッケージをアンインストール

パッケージ名をスペース区切りで記述します。

```
npm uninstall パッケージ1 パッケージ2 パッケージ3
npm r パッケージ1 パッケージ2 パッケージ3
```

### グローバルのパッケージをアンインストール

```
npm uninstall -global パッケージ名
npm uninstall -g パッケージ名 
```

### 未使用のパッケージをアンインストール

`package.json` に記述されていないパッケージをアンインストールします。

```
npm prune
```

## パッケージのアップデート

```
npm update パッケージ
```

### グローバルのパッケージをアップデート

```
npm update -global パッケージ 
npm update -g パッケージ
```

### package.json に記述されたすべてのパッケージをアップデート

```
npm update
```

### パッケージに新しいバージョンが存在するか確認

```
npm outdated
```

#### グローバルのパッケージに新しいバージョンが存在するか確認

```
npm outdated -g
```

### npm-check-updates

`update` を使用した場合、以下の問題点があるため `npm-check-updates` というパッケージを使用して行う。

* メジャーバージョンのアップデートまで行わない
* package.json の更新はしない

`npm-check-updates` は、`package.json` を更新するだけでパッケージの更新は行いません。
そのため、 `package.json` の更新後、 `npm update` でパッケージを更新する必要があります。

#### インストール

どのプロジェクトでも利用可能にするためにグローバルにインストールします。

```
npm install -global npm-check-updates
npm i -g npm-check-updates
```

#### バージョン確認

`package.json` に記載されているパッケージの現在インストールされているバージョンと最新バージョンが一覧表示されます。

```
ncu
```

##### 特定のパッケージを除外

指定したパッケージ以外の情報が一覧表示されます。

```
ncu -x パッケージ
```

#### package.json の更新

```
ncu -u
```

##### 特定のパッケージを更新

```
ncu -u パッケージ
```

##### 複数のパッケージを更新

パッケージ名をスペース区切りで記述します。

```
ncu -u パッケージ1 パッケージ2 パッケージ3
```

##### 特定のパッケージを除外して更新

```
ncu -u -x パッケージ
```

#### パッケージのアップデート

`package.json` が更新されたため、パッケージのアップデートを行います。

```
npm update
```

## パッケージの情報を表示

```
npm list
npm ls
```

オプションのエイリアスは他にも `la` `ll` も指定可能です。

```
npm la
npm ll
```

### 第一階層のパッケージのみ表示

```
npm list -depth=0
```

### グローバルインストールされたパッケージの一覧を表示

```
npm list -global
npm list -g
```

## パッケージの脆弱性確認

```
npm audit
```

### 脆弱なパッケージの依存関係と互換性のあるものを更新

```
npm audit fix
```

### JSON形式で脆弱性のあるパッケージの情報を取得

```
npm audit -json
```

## npmで利用できるコマンド確認

`npm` で利用できるコマンドを確認できます。

```
npm -l
```