結局何が違うの
買い物に例えて分かりやすく言うと
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 頑張っていきたい