package-lock.jsonファイルは、ノードパッケージのインストール時に自動的に生成されます。それが何であるかを学ぶ
In version 5, npmを導入しましたpackage-lock.json
ファイル。
あれは何でしょう?あなたはおそらくについて知っていますpackage.json
ファイル、これははるかに一般的であり、ずっと長い間存在しています。
このファイルの目的は、インストールされているすべてのパッケージの正確なバージョンを追跡して、メンテナがパッケージを更新した場合でも、同じ方法で製品を100%再現できるようにすることです。
これは非常に特定の問題を解決しますpackage.json
未解決のまま。 package.jsonでは、を使用して、アップグレードするバージョン(パッチまたはマイナー)を設定できます。semver表記例:
- あなたが書くなら
~0.13.0
、パッチリリースのみを更新したい:0.13.1
大丈夫ですが0.14.0
ではありません。 - あなたが書くなら
^0.13.0
、パッチとマイナーリリースを更新したい:0.13.1
、0.14.0
等々。 - あなたが書くなら
0.13.0
、それは常に使用される正確なバージョンです
一般に巨大なnode_modulesフォルダーをGitにコミットせず、プロジェクトを別のマシンに複製しようとすると、npm install
コマンド、指定した場合~
パッケージの構文とパッチリリースがリリースされました。これがインストールされます。についても同じ^
およびマイナーリリース。
次のように正確なバージョンを指定する場合
0.13.0
この例では、この問題の影響を受けません。
あなたか、実行して世界の反対側でプロジェクトを初期化しようとしている別の人である可能性がありますnpm install
。
したがって、元のプロジェクトと新しく初期化されたプロジェクトは実際には異なります。パッチやマイナーリリースで重大な変更が導入されるべきではない場合でも、バグが発生する可能性があることは誰もが知っています(そうなるでしょう)。
ザ・package-lock.json
各パッケージの現在インストールされているバージョンを設定します石で、およびnpm
実行時にそれらの正確なバージョンを使用しますnpm install
。
この概念は新しいものではなく、他のプログラミング言語のパッケージマネージャー(PHPのComposerなど)は何年もの間同様のシステムを使用しています。
ザ・package-lock.json
ファイルはGitリポジトリにコミットする必要があります。これにより、プロジェクトが公開されている場合や共同編集者がいる場合、またはGitをデプロイのソースとして使用している場合に、他の人がファイルをフェッチできます。
依存関係のバージョンは、package-lock.json
実行時にファイルnpm update
。
例
これはの構造例ですpackage-lock.json
実行時に取得するファイルnpm install cowsay
空のフォルダ内:
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.
0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
},
"cowsay": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz"
,
"integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkM
Ajufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==",
"requires": {
"get-stdin": "^5.0.1",
"optimist": "~0.6.1",
"string-width": "~2.1.1",
"strip-eof": "^1.0.0"
}
},
"get-stdin": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.
1.tgz",
"integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g="
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/
is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
},
"minimist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10
.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
},
"optimist": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
<span style="color:#f92672">"requires"</span>: {
<span style="color:#f92672">"minimist"</span>: <span style="color:#e6db74">"~0.0.1"</span>,
<span style="color:#f92672">"wordwrap"</span>: <span style="color:#e6db74">"~0.0.2"</span>
}
},
<span style="color:#f92672">"string-width"</span>: {
<span style="color:#f92672">"version"</span>: <span style="color:#e6db74">"2.1.1"</span>,
<span style="color:#f92672">"resolved"</span>: <span style="color:#e6db74">"https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"</span>,
<span style="color:#f92672">"integrity"</span>: <span style="color:#e6db74">"sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="</span>,
<span style="color:#f92672">"requires"</span>: {
<span style="color:#f92672">"is-fullwidth-code-point"</span>: <span style="color:#e6db74">"^2.0.0"</span>,
<span style="color:#f92672">"strip-ansi"</span>: <span style="color:#e6db74">"^4.0.0"</span>
}
},
<span style="color:#f92672">"strip-ansi"</span>: {
<span style="color:#f92672">"version"</span>: <span style="color:#e6db74">"4.0.0"</span>,
<span style="color:#f92672">"resolved"</span>: <span style="color:#e6db74">"https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"</span>,
<span style="color:#f92672">"integrity"</span>: <span style="color:#e6db74">"sha1-qEeQIusaw2iocTibY1JixQXuNo8="</span>,
<span style="color:#f92672">"requires"</span>: {
<span style="color:#f92672">"ansi-regex"</span>: <span style="color:#e6db74">"^3.0.0"</span>
}
},
<span style="color:#f92672">"strip-eof"</span>: {
<span style="color:#f92672">"version"</span>: <span style="color:#e6db74">"1.0.0"</span>,
<span style="color:#f92672">"resolved"</span>: <span style="color:#e6db74">"https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz"</span>,
<span style="color:#f92672">"integrity"</span>: <span style="color:#e6db74">"sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="</span>
},
<span style="color:#f92672">"wordwrap"</span>: {
<span style="color:#f92672">"version"</span>: <span style="color:#e6db74">"0.0.3"</span>,
<span style="color:#f92672">"resolved"</span>: <span style="color:#e6db74">"https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"</span>,
<span style="color:#f92672">"integrity"</span>: <span style="color:#e6db74">"sha1-o9XabNXAvAAI03I0u68b7WMFkQc="</span>
}
}
}
インストールしましたcowsay
、に依存します
get-stdin
optimist
string-width
strip-eof
次に、これらのパッケージには他のパッケージが必要です。requires
一部が持っているプロパティ:
ansi-regex
is-fullwidth-code-point
minimist
wordwrap
strip-eof
それらはアルファベット順にファイルに追加され、それぞれにversion
フィールド、resolved
パッケージの場所を指すフィールド、およびintegrity
パッケージの検証に使用できる文字列。
私の無料ダウンロードNode.jsハンドブック
その他のノードチュートリアル:
- npmパッケージマネージャーの紹介
- Node.jsの紹介
- Axiosを使用したHTTPリクエスト
- Node.jsアプリをホストする場所
- Node.jsを使用してGoogleAnalyticsAPIと対話します
- npxノードパッケージランナー
- package.jsonガイド
- npmはどこにパッケージをインストールしますか?
- Node.jsを更新する方法
- npmを使用してインストールされたパッケージを使用または実行する方法
- package-lock.jsonファイル
- npmを使用したセマンティックバージョニング
- node_modulesフォルダーをGitにコミットする必要がありますか?
- すべてのノードの依存関係を最新バージョンに更新します
- Node.jsを使用したJSONの解析
- npmパッケージのインストール済みバージョンを検索します
- Node.jsストリーム
- 古いバージョンのnpmパッケージをインストールします
- ノード内の現在のフォルダを取得します
- ノードにオブジェクトを記録する方法
- エクスポートを使用してノードファイルから機能を公開します
- ノードとブラウザの違い
- ノードを使用してHTTPPOSTリクエストを作成します
- Nodeを使用してHTTPリクエストの本文データを取得する
- ノードバッファ
- Node.jsの簡単な歴史
- Node.jsをインストールする方法
- Nodeを使用するには、どのくらいのJavaScriptを知っている必要がありますか?
- Node.jsREPLの使用方法
- ノード、コマンドラインから引数を受け入れる
- ノードを使用してコマンドラインに出力する
- ノードのコマンドラインからの入力を受け入れる
- `npmアンインストール`でnpmパッケージをアンインストールする
- npmグローバルまたはローカルパッケージ
- npmの依存関係とdevDependencies
- Node.jsイベントループ
- process.nextTick()を理解する
- setImmediate()を理解する
- ノードイベントエミッター
- HTTPサーバーを構築する
- ノードでHTTPリクエストを行う
- Nodefsモジュール
- Axiosを使用したノードでのHTTPリクエスト
- Nodeでファイルを読み取る
- ノードファイルパス
- Nodeを使用したファイルの書き込み
- ノードファイルの統計
- ノードでのファイル記述子の操作
- ノード内のフォルダーの操作
- ノードパスモジュール
- ノードhttpモジュール
- Node.jsでのWebSocketの使用
- MySQLとNodeの操作の基本
- Node.jsでのエラー処理
- パグガイド
- Node.jsから環境変数を読み取る方法
- Node.jsプログラムを終了する方法
- Nodeosモジュール
- ノードイベントモジュール
- ノード、開発と本番の違い
- Node.jsにファイルが存在するかどうかを確認する方法
- Node.jsで空のファイルを作成する方法
- Node.jsでファイルを削除する方法
- Node.jsを使用してファイルの最終更新日を取得する方法
- JavaScriptで日付が今日かどうかを判断する方法
- Node.jsのファイルにJSONオブジェクトを書き込む方法
- 次のプロジェクトでNode.jsを使用する必要があるのはなぜですか?
- 任意のフォルダからWebサーバーを実行します
- Node.jsでMongoDBを使用する方法
- ChromeDevToolsを使用してNode.jsアプリをデバッグします
- pnpmとは何ですか?
- Node.jsランタイムv8オプションリスト
- npm使用時の「書き込みアクセスの欠落」エラーを修正する方法
- Node.jsでESモジュールを有効にする方法
- Node.jsを使用して子プロセスを生成する方法
- Expressで解析されたボディと生のボディの両方を取得する方法
- Node.jsでファイルのアップロードを処理する方法
- ノードモジュールのピア依存関係とは何ですか?
- Node.jsでCSVファイルを作成する方法
- Node.jsでCSVファイルを読み取る方法
- ノードコアモジュール
- Node.jsを使用して一度に複数のフォルダー番号をインクリメントする
- キャンバスをデータURLに印刷する方法
- Node.jsとCanvasを使用して画像を作成および保存する方法
- Node.jsを使用して画像をダウンロードする方法
- Node.jsでファイルの名前を一括変更する方法
- ノード内のフォルダ内のすべてのファイルの名前を取得する方法
- promiseを使用し、Node.jsコールバックベースの関数で待機する方法
- npmパッケージをローカルでテストする方法
- 実行時に現在のNode.jsバージョンを確認する方法
- Sequelizeを使用してPostgreSQLと対話する方法
- Node.jsを使用してHTMLページを提供する
- Node.jsの `util.pumpは関数ではありません`エラーを解決する方法