Help us understand the problem. What is going on with this article?

【Node.js】package.jsonとpackage-lock.jsonについて簡単にまとめる

More than 1 year has passed since last update.

結局何が違うの

買い物に例えて分かりやすく言うと

package.jsonは買うものリスト

100円のりんごを買いたいと書かれている

package-lock.jsonは実際に買ってきた領収書

実際には120円のりんごを買いましたと書かれている

package-lock.jsonの役割

package-lock.jsonはnode_modules配下やpackage.jsonに変更があった際に自動で作成・変更されるファイル

package.jsonに書かれたチルダ ~ やキャレット ^ に従って
アップデートまたはインストールしたパッケージとバージョンが記載されている

チルダ ~

書いてあるバージョン以下のアップデートは許容する

  • ~1 → 1.1.0 OK
  • ~1 → 1.2.5 OK
  • ~1 → 2.1.0 NG

キャレット ^

一番左のバージョン以外のアップデートは許容する

  • ^2 → 2.1.0 OK
  • ^2 → 3.1.0 NG

package.jsonの役割

中身とその役割は以下のようになっている

{
  "name": "hoge", // プロジェクト名
  "description": "hoge", // プロジェクトの概要
  "version": "0.0.1", // プロジェクトバージョン
  "homepage": "https://hoge/hoge",  // プロジェクトのホームページ.
  // 開発者情報
  "author": {
    "name": "hoge",
    "email": "hoge@hoge"
  },
  // リポジトリ情報
  "repository": {
    "type": "git", // バージョン管理システム
    "url": "git://github.com/kokudori/xxx.git" // リポジトリのURL
  },
  // バグ報告先
  "bugs": {
    "url": "https://hoge/hoge"
  },
  // ライセンス
  "licenses": [
    {
      // ライセンスのタイプ
      "type": "MIT",
      // ライセンス情報ファイルのURL.
      "url": "https://hoge/hoge"
    }
  ],
  "main": "xxx.js", // 最初に読まれるファイル. エントリポイント.
  // nodeとnpmのバージョン指定
  "engines": {
    "node": "10.15.3",
    "npm": "6.4.1"
  },
  // パッケージのライフサイクルの様々な時点で実行されるスクリプトの設定
  "scripts": {
    "test": "nodeunit hoge.js"
  },
  // npm install 時にインストールされるパッケージ
  "dependencies": {
    "hoge1": "^0.0.1",
    "hoge2": "~0.0.2"
  },
}

よくある疑問なので簡単にまとめてみた
やっぱりアウトプットすると頭が整理されるね
もっと Node.js 頑張っていきたい

risto24
都内でWEB&アプリ開発者をしています。小規模チームへのアジャイル導入に注力している認定スクラムマスターでもあります。 好きな技術は JavaScript / Node.js / React.js / ReactNative / Firebase / Next.js などです。 Qiitaでは日常の学びや気付きをアウトプットしています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away