package.jsonメモ

RubyでいうところのGemfileに相当するものだが、他にも役割がある。npmコマンドとyarnコマンドのどちらもpackage.jsonを参照するようである。

ファイル作成

npmならnpm init -y、yarnならyarn init -yで作成できる。-yオプションを付けなければライセンスなどの選択ができる。npmとyarnで生成されるファイルに差異はあるが基本的に同じものである。

ロックファイル

RubyでいうところのGemfile.lockに相当するものとして、npmの場合はpackage-lock.json、yarnの場合はyarn.lockファイルができる。npmを使っているのかyarnを使っているのかはこれで判断できるはずである。

node_modulesディレクトリ

インストールしたパッケージが格納されるディレクトリ。Rubyでいうところのvendor/bundleにあたる。一応、-gオプションを付けてインストールするとグローバルにインストールされるらしいが、デフォルトではプロジェクトローカルのnode_modulesディレクトリに格納される。

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

RubyのGemfileと違って、package.jsonを編集するのではなく、コマンドによってpackage.jsonへのパッケージ追加と同時にインストールを行う。

npmの場合はnpm install --save-dev webpack webpack-cli、yarnの場合はyarn add webpack webpack-cli --devのように行う。

バージョンの指定をしたい場合はyarn add webpack@5.38.1 --devのようにパッケージ名の後に@バージョンを指定する。

実行のためのパッケージと開発のためのパッケージ

webpackなどは開発環境でのみ利用し、ブラウザで動かす時には利用されないパッケージである。逆にjQueryやReactなどはブラウザで動かすときに利用されるパッケージである。

このように用途の違うパッケージの依存を区別するために、dependenciesdevDependenciesに分けてパッケージを管理する。

{
  // 省略
  "devDependencies": {
    "webpack": "^5.38.1",
    "webpack-cli": "^4.7.2"
  },
  "dependencies": {
    "jquery": "^3.6.0"
  }
}

開発用(devDependencies)のパッケージをインストールする場合は、npmならnpm install --save-dev webpack webpack-cli、yarnならyarn add webpack webpack-cli --devのように行う。

実行用(dependencies)のパッケージをインストールする場合は、npmならnpm install --save jquery、yarnならyarn add jqueryのように行う。

scripts

コマンドのショートカットを作成することもできる。

  "scripts": {
    "build": "webpack"
  },

package.jsonに上記を追加してnpm run buildまたはyarn run buildを実行すればwebpackが実行される。ファイルウォッチさせたい場合は、"build": "webpack --watch"とすればよい。

上記のscriptsが必須というわけではなく、追加せずともyarn exec webpackyarn exec webpack --watchのようにコマンド実行はできる。