2022/9/10)はじめに今回の記事の目的ReactアプリやNode.jsのExpressでアプリを作ると自動で作成されるpackage.jsonファイルと、package-lock.jsonファイルの意味をメモ。【参考】yarn.lockとはおわりに参考文献package.jsonの役割ざっくり理解では以下。npm(パッケージ管理ツール)で利用されるファイル。このプロジェクトで、インストールするしておくべきパッケージ(と、そのバージョン)を定義したもの。installというコマンドを打つだけで、package.jsonで定義した通りにパッケージをインストールしてくれる。何が良いのか?package.jsonさえ同じものを使えば、誰でも同じ開発環境が構築できること。パッケージの実物(node_modulesフォルダ配下)は容量が大きすぎて共有できないパッケージ同士の依存関係も解決してくれる。依存関係とは、「あるプログラムのビルドや実行のために、別のプログラムが必要であること」。ここでは、あるモジュールを使うためにほかのモジュールが必要であることや、特定のバージョンを利用する必要があることなどを表す。nvmとnpmの違いnvmは、Node.jsのバージョンを管理するツール。npmは、Node.jsのパッケージ(モジュール)とそのバージョンを管理するツール。package.jsonのある場所プロジェクトフォルダの直下に作成する。initでNode.jsプロジェクトを開始すると自動で生成される。package.jsonの中身あくまで一例だが、イメージは以下。[パッケージ名]でパッケージをインストールすると、package.jsonの"dependencies"の中にパッケージの情報が追記される。package-lock.jsonとはパッケージのバージョンを完全にロックするためのもの。package.jsonだけでは、インストールするタイミングによってパッケージのバージョンが変わってしまうことがある。バージョンを「ロック」するのがpackage-lock.json。チームメンバーの開発環境に自分と同じパッケージをインストールしてほしい場合、package.jsonだけでは完全に再現はできない。"^0.21.4",を見るとわかる。この例では、「axiosパッケージをバージョン0.x.xでインストールすること」までしか規定していない。npmでは、バージョン指定に^をつけると、メジャーバージョンまでを規定する。installを実行することでバージョンを含めて完全再現することができる。一例ではあるが中身は以下。