npm config で .npmrc を設定してパッケージインストール時のバージョンを固定したり npm init 時の初期値を変えたりする

npm config set なんたら というコマンドで、~/.npmrc ファイルに初期設定を書き込める。これを使うと、パッケージインストール時に package.json に記載するバージョン番号にチルダやキャレットを付けないようにしたり、npm init した時の著者やライセンスの初期値を変更したり出来る。

パッケージインストール時のバージョンを固定する

通常、パッケージをインストールする時に package.json にチルダやキャレットを付けないようにするには、-E (--save-exact) オプションを付ける。

# devDependencies にバージョン固定で追記する
$ npm install --save-dev --save-exact

# 省略記法だとこのとおり
$ npm i gulp -D -E

チーム開発ではバージョンを固定したいことも多いが、このオプションを結構忘れがちで、チルダやキャレットによる SemVer の範囲指定を軽視しているメンバもいたりして困る。そこで、以下のコマンドで npm install 時に --save-exact オプションを付けたことにするよう設定する。

$ npm config set save-exact=true

これをやると、~/.npmrc というファイルが生成され、そこに追記される。このファイルを管理しておけばチームでも初期値を共有できるというワケだ。

ついでに入れておきたい also=dev

npm outdatednpm update 時に devDependencies も含めるようにするには以下の設定を入れておく。

$ npm config set also=dev

npm init 時の初期値を変える

毎回同じ author を入力したり、ライセンスを MIT に書き換えたりするのが面倒…。と思っていたら、その初期値を設定する方法がちゃんとあった。

$ npm config set init.author.name "お名前"
$ npm config set init.author.email めーる@あどれす.com
$ npm config set init.author.url http://自分のサイト.com/
$ npm config set init.license MIT

これだけでも、 npm init -y でかなり良い感じに package.json が作れるようになったと思う。

npm の動作が遅い気がしたら progress=false

特に Windows の GitBash なんかで感じるのだが、npm install したりした時の進捗表示が動作を遅くする原因になっていることがある。このコンソール出力を無効にするには、progress=false を設定する。

$ npm config set progress=false

参考