package-lock.jsonファイル

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.10.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ハンドブック


その他のノードチュートリアル: