npm installの使い方とnpm ciの使い方と違い

npm installの使い方とnpm ciの使い方と違い

npm installコマンド,npm ciコマンドの使い方です。

$ npm init

という使い方です。ここから始まります。

この配下をnpm管理下にするということです。package.jsonが作成されます。

次にツール(パッケージとかモジュールとか呼ばれる)を入れます。gulpを入れてみます。

$ npm install --save-dev gulp

とタイプします。

「node_modules」というフォルダが作成され、その配下にgulpとそれに依存するツールが全てインストールされます。

npm install」は、「npm i」と省略することが可能です。

--save-dev

npm installする際に「–save-dev」を付けると、「開発中のみ使用するツール」という意味になります。

このインストールをすると、package.jsonが変わっていると思います。

見て分かるように、gulpは「dependencies」ではなく、「devDependencies」に追加されているのがわかります。

本番の時にいらないツール類(mocha,sinon,chaiなどテストで使用するものなど)は「--save-dev」を付けてインストールします。

ちなみに、--save-devは-Dと短縮することが可能です。(-Dオプションは案外知られていません)

アンインストール

$ npm uninstall --save-dev gulp

とタイプします。

-g

「-g」をつけると、グローバルインストール、というインストールになります。通常通りインストールされ、パスも通るのでどこのディレクトリに移動してもそのまま使えます。package.jsonに変更はありません。

$ npm install chai -g

「-g」をつけないインストールを、ローカルインストールといいます。

この場合もアンインストールはinstallをuninstallに変えるだけです。

$ npm uninstall chai -g

グローバルインストールしたモジュールを確認するにはlsコマンドを使用します。

$ npm ls -g --depth=0

npm install

このコマンドを実行すると、package.jsonの依存関係(dependenciesやdevDependencies)を見て、全てインストールします。

チームで開発する場合はpackage.jsonの依存関係はよく追加されるので、コミット対象となると思います。

誰かが追加した依存関係をインストールする為には、npm installと実行する必要がでてくるのです。※開発時に困るケースが多々あるのでnpm iは使用しない場合が多いです

バージョン指定してインストールする

パッケージのバージョン最新をインストールしたくない場合ってありますよね。

そう言う場合はバージョン指定してインストールすることが出来ます。

npm install class-validator@0.9.0

@バージョンとすればそのバージョンをインストールする事が可能です。

ここで言葉の定義についてです。

0.9.1のそれぞれについて以下のように呼ぶことが多いです。セマンティックバージョニングと言います。

バージョン 呼称
0 メジャーバージョン
9 マイナーバージョン
1 パッチバージョン

^(キャレット)と~(チルダ)の違い

npmのメジャーバージョンが5になってからパッケージをインストールするとデフォルトで^(キャレット)がつくようになりました。

~0.9.1と書いていると、0.9.1から0.9.9までバージョンが上がることを許容します。

^1.1.1と書いていると、1.1.1から1.9.9までバージョンが上がることを許容します。

バージョン固定したい

npm installすると勝手に^(チルダ)がつきますが、これは「オープンソースの開発者がマイナーバージョンアップで互換性を壊すような真似はしない」ことが前提です。ですが、実際そうでもないモジュールが存在します。

なのでバージョン固定したい、というケースがあります。

package-lock.jsonがnpm ver5.x.xから追加されましたが、こちらもバージョンを固定する追加機能です。

npm shrinkwrapコマンドでnpm-shrinkwrap.jsonを作成することによってバージョンが固定されるようになります。

npmのバージョン確認方法

npm -vで確認できます。

$ npm -v
9.5.1

npm ciの使い方とnpm installとの違い

npm installするとnode_modulesが更新される可能性があるため、package-lock.jsonが変更される可能性があります。

このnode_modulesが曲者で、更新されてしまうと動作が変わってしまったりすることが多々あるので、npm installするよりnpm ciした方が良い場合があります。

npm ciはpackage-lock.jsonからnode_modulesを作成します。

例えばプロジェクトに新規参画者はpackage.jsonからnpm installしてnode_modulesを作成するよりもpackage-lock.jsonからnode_modulesを再作成するnpm ciする方が良いです。

理由は以下です。

  • node_modulesを削除してからインストールする
  • package-lock.jsonが更新されない(package-lock.jsonを元にnode_modulesを再作成するため)
  • package.jsonとpackage-lock.jsonの整合性チェックが行われる
https://docs.npmjs.com/cli/ci

コメント

タイトルとURLをコピーしました