NPMについて(まとめ)

NPMについて

NPMとは何か

  • JavaScript開発者間でライブラリを共有するためのプラットフォーム
  • Node.jsをインストールすればついてくる。
    • コンソールでnpmコマンドを用いて利用する。

NPMで出来ること

  • JSのライブラリをプロジェクトディレクトリにインストール・管理する
  • 自作したライブラリをnpmを通じて公開することができる
  • ライブラリのバージョンや、依存関係などを細かく制御できる
  • 開発環境と本番環境を分けて環境を構築できる

パッケージのバージョンについて

  • NPM ではパッケージのバージョン管理にセマンティック・バージョニングを用いている。
  • パッケージのバージョンは X.Y.Z のようにドットで区切られ、それぞれメジャー.マイナー.パッチと呼ぶ。

例えば

HelloWorld パッケージ(ver 1.0.0)があり、Helloクラスが定義されていると仮定すると、以下のようにバージョンが変わっていく。

  1. Hello のあるメソッドの不具合を修正した >>> 1.0.1
  2. Hello のメソッドを追加した >>> 1.1.0
  3. Hello の仕様を変更した >>> 2.0.0

この内の3つめは利用者側にとって意図しない挙動を発生させる可能性があるため、基本的にはnpmでインストールを行うとpackage.jsonのバージョンにハット付きでインストールされる。

これはメジャーバージョンは固定するが、パッチとマイナーバージョンの更新は許容するといった意味になる。

NPMの使い方

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

NPM公式ドキュメント より一部抜粋

  • npm install packageName

    • -P | --save-prod
      • インストール時なにもオプションを指定しない場合もこの方法が使われる
      • package in dependencies
    • -D | --save-dev
      • 開発向けパッケージのインストール時に用いる。(リリース時に不要なものはこちらへ)
      • package in devDependencies
    • -O | --save-optional
      • 環境に依存するパッケージはこちらへ。(Macのみなど)
      • package in optionalDependencies
    • --no-save
      • その場のみ利用する場合はこちら。package.jsonへ追加しない
      • Prevents saving to dependencies
    • -E | --save-exact
      • 最新のパッケージをインストールし、その後は更新しない場合はこちら。
    • -B | --save-bundle
      • つかいかたわからない
      • bundleDependenciesに記載される
    • --only={prod[uction] | dev[elopment]}
      • 開発・本番環境を切り替えてパッケージのインストールを行う場合に用いるコマンド。(重要)
      • --only=prod
        • dependencies のみインストール
      • --only=dev
        • devDependencies のみインストール
    • packageName@x.y.z
      • packageNameのバージョンを指定してインストール(更新しない)
    • -g | --global
      • グローバルインストール
      • どのディレクトリからも利用可能。
    • @
      • パッケージのバージョンを範囲を満たす形でインストールする。
      • packageName@">=0.1.0 <0.2.0"
      • マイナーバージョンの1 以上 2 未満の場合
  • パッケージのアンインストール

    • uninstallはr,remove,rm,un,unlink
  • npm config

    • デフォルトの挙動を変更する場合に用いる。(全てのパッケージのインストールに更新しない設定を用いるなど)
    • set
      • save-prefix="~"
        • パッチバージョンのみ更新を許可する
      • save-exact true
        • バージョンを固定する。更新を許可しない。