LoginSignup
84
75

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-05-08

結局何が違うの

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

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 頑張っていきたい

84
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
84
75