Package lock json: Page not found Β· GitHub Pages

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

javascript — Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ package-lock.json?

Π”ΠΎΠ±Ρ€ΠΎΠ΅ врСмя суток.
Π― ΠΏΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΊ NPM, ΠΏΠΎΡ‡ΠΈΡ‚Π°Π» Ρ„ΠΎΡ€ΡƒΠΌΡ‹, Π½ΠΎ всё Ρ€Π°Π²Π½ΠΎ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π½Π΅ совсСм понимаю, ΡΠΌΡ‹ΡΠ»ΠΎΠ²ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ этого Ρ„Π°ΠΉΠ»Π°.

Π’ΠΎΡ‚ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ описано Π½Π° npm Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для фиксации Π² исходных Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… ΠΈ
ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ:

1) ΠžΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ СдинствСнноС прСдставлСниС Π΄Π΅Ρ€Π΅Π²Π° зависимостСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ
ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, разворачивая ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ
установил ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ зависимости.

2) ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Β«ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ» ΠΊ
ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ состояниям node_modules Π±Π΅Π· фиксации самого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

3) Для облСгчСния большСй видимости ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π΅Ρ€Π΅Π²Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Ρ…
исходных тСкстов контроля.

4) И ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс установки, позволяя npm ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ
ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.

Вопрос сразу ΠΏΠΎ 1 ΠΏΡƒΠ½ΠΊΡ‚Ρƒ, ΠΈΠ±ΠΎ Ρƒ мСня package.json ΠΈ package-lock.json Π½Π΅ Π² Π³ΠΈΡ‚ ΠΈΠ³Π½ΠΎΡ€Π΅! Они комитятся.
И ΠΊΠ°ΠΊ написано Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΡˆΠΊΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ npm i, ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ устанавливаСт зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ описаны Π² Ρ„Π°ΠΉΠ»Π΅ package.json.
И скачав ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΡ‹ ΠΈΠ΄Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π½Π΅Ρ‘ ΠΈ устанавливаСм Π΅Ρ‘ зависимости (ΠΈ Ρ‚Π°ΠΊ рСкурсивно).
На Π΄Π°Π½Π½ΠΎΠΌ этапС Π² package-lock.json просто выводится информация ΠΊΠ°ΠΊΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ зависимости основных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΡ‹ скачали.
Как ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ «Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ установил ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ зависимости» ?

И это всё ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· 3 ΠΏΡƒΠ½ΠΊΡ‚Π°.

Ну ΠΈ согласСн с 4 ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ, ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ Ссли Π² node_modules ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ (с Ρ‚ΠΎΠΉ ΠΆΠ΅ вСрсиСй ΠΈ Ρ…Π΅ΡˆΠ΅ΠΌ), Ρ‚ΠΎ Π΅Π³ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚. НО, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ эту ΠΈΠ½Ρ„Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ ΠΏΠΎ package-lock.json, Π° Π² зависимостях основного ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈΠ±ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ±Ρ‹ Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ package.json. Π’.Π΅ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» получаСтся.

Π’Π΅Ρ€Π½ΠΎ Π»ΠΈ я всС понимаю? ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠΏΡ€Π°Π²ΡŒΡ‚Π΅!

Lock-Ρ„Π°ΠΉΠ»Ρ‹ npm / Π‘Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π”ΠΎΠΌΠšΠ»ΠΈΠΊ / Π₯Π°Π±Ρ€

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ постС ΠΌΡ‹ рассмотрСли экосистСму npm Π² качСствС источника хаоса Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΈ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ с ΡƒΠΌΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ зависимостСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наши риски. БСгодня ΠΌΡ‹ ΠΏΠΎΠΉΠ΄Π΅ΠΌ дальшС ΠΈ рассмотрим lock-Ρ„Π°ΠΉΠ»Ρ‹ npm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π½ΠΈΠΌ.

Как ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ, npm Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ манифСст ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ρ„Π°ΠΉΠ» package.json) ΠΈ описанныС Π² Π½Π΅ΠΌ зависимости, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ локально ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ node_modules, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТатся всС установлСнныС зависимости.

НС Π±ΡƒΠ΄Π΅ΠΌ сСйчас ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ структуры node_modules, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π΅ всСгда ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ»ΠΎΡΠΊΡƒΡŽ структуру, Π° ΠΌΠΎΠ³ΡƒΡ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это происходит, ΠΊΠΎΠ³Π΄Π° Π² Π΄Π΅Ρ€Π΅Π²Π΅ зависимостСй присутствуСт ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий. ΠŸΡ€ΠΈ этом сама структура Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Π½Π΅ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° 100 %, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ, Π² Ρ‚ΠΎΠΌ числС, ΠΎΡ‚ порядка установки зависимостСй.

Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии npm ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ установки зависимостСй, ΠΈ структура Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

Π’Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ список зависимостСй Π² манифСстС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° содСрТит Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ вСрсий semver, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ зависимости? ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ установка зависимостСй Π² Ρ€Π°Π·Π½ΠΎΠ΅ врСмя Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ содСрТимоС npm registry постоянно мСняСтся, рСгулярно выходят Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ зависимостСй, Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости (зависимости Π²Π°ΡˆΠΈΡ… зависимостСй) Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

А Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° содСрТимоС ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² npm registry, Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π±Π΅Π· обновлСния вСрсии. Π­Ρ‚ΠΎ называСтся ΠΌΡƒΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ npm registry, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² частных рССстрах Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. А Ρ‡Ρ‚ΠΎ, Ссли содСрТимоС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсти Π² ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ?

Учитывая всС эти Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ структура Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ node_modules ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π΄Π°ΠΆΠ΅ Ссли ваш манифСст ΠΏΡ€ΠΈ этом остаСтся Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌ.

Наивно Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ зависимости, прописывая строгиС вСрсии Π² манифСстС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (вмСсто Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² semver): ΠΊΠ°ΠΊ ΠΌΡ‹ рассмотрСли Π²Ρ‹ΡˆΠ΅, это Π½Π΅ даст сущСствСнных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. Π”Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π½Π΅ пСрСстанут Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° установку зависимостСй. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚Π΅ ваши прямыС зависимости, Ρ‚ΠΎ получится ситуация, ΠΊΠΎΠ³Π΄Π° Π±ΠΎΠ»Π΅Π΅ старыС вСрсии Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΎΠ»Π΅Π΅ свСТими вСрсиями Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… зависимостСй, ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ это ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ нас Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ CI/CD ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСт, тСстируСт ΠΈ Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ прилоТСния Π² Ρ€Π°Π·Π½Ρ‹Π΅ срСды выполнСния. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ ID ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Git (ΠΈΠ»ΠΈ ΠΊ Git-Ρ‚Π΅Π³Π°ΠΌ), ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ систСма Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ (Π°Ρ€Ρ…ΠΈΠ² с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ для выполнСния Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° поступаСт ΠΊΠΎΠ΄ ΠΈΠ· Git-рСпозитория, вСрсионированный Ρ‡Π΅Ρ€Π΅Π· ID ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ протСстированный ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚. Π’ ΠΈΠ΄Π΅Π°Π»Π΅, это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ чистая функция (pure function): Ссли Π²Ρ‹ пСрСсобСрётС ΠΊΠΎΠΌΠΌΠΈΡ‚, созданный нСсколько мСсяцСв Π½Π°Π·Π°Π΄, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚. Однако ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТимоС node_modules Π² Git, ΠΈ получаСтся, Ρ‡Ρ‚ΠΎ послС клонирования рСпозитория Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ установку зависимостСй ΠΈΠ· рССстра npm. А, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ выяснили, этот процСсс довольно нСстабилСн ΠΈ привязан ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ экосистСмы (содСрТимому npm registry, вСрсиям npm ΠΈ Ρ‚. Π΄.). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ npm вносит хаос Π² наш ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ CI/CD ΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ сборку ΠΏΠΎ ID ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ всС описанныС Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ использованиС зависимостСй Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, npm (ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ соврСмСнный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠΈ зависимостСй. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это автоматичСски ΠΈ прямо ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ вызывая ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm install, npm Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ устанавливаСт всС зависимости ΠΈ создаёт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ node_modules, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ создаСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» package-lock.json. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» называСтся lock-Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈ содСрТит Π² сСбС ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных зависимостях, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии, URL npm registry, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π» скачан ΠΏΠ°ΠΊΠ΅Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ SHA-Ρ…ΡΡˆ самого Π°Ρ€Ρ…ΠΈΠ²Π° с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ. Помимо ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, lock-Ρ„Π°ΠΉΠ» npm описываСт Π΅Ρ‰Π΅ ΠΈ порядок установки зависимостСй, ΠΈ ΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ npm install ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΡƒΠ²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ lock-Ρ„Π°ΠΉΠ» содСрТится Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ Π² дальнСйшСм зависимости Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ соотвСтствии с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· lock-Ρ„Π°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm install сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π· Π½Π° любой машинС ΠΈ Π² любоС врСмя (Π΄Π°ΠΆΠ΅ спустя мСсяцы), ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ структуру Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ node_modules. Π’Π°ΠΊΠΆΠ΅ стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ установка зависимостСй Ρ‡Π΅Ρ€Π΅Π· lock-Ρ„Π°ΠΉΠ» осущСствляСтся быстрСС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ npm Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ зависимостСй ΠΈΠ· манифСста с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, доступными Π² рССстрС npm. Π”Π°ΠΆΠ΅ Ссли вСрсия npm обновится ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ установки зависимостСй помСняСтся, lock-Ρ„Π°ΠΉΠ» всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ», ΠΏΠΎ сути, описываСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° основС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ смыслС эта концСпция Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства lock-Ρ„Π°ΠΉΠ»Π°, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² систСму контроля вСрсий. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ строго привяТСтС ΠΏΠΎΠ»Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ Π² Git. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ воспроизводство сборок Π² вашСй систСмС CI/CD ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Β«ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ».

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ склонируСт Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊ сСбС Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй, ΠΊΠ°ΠΊ ΠΈ Ρƒ вас. Π­Ρ‚ΠΎ устранит ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ· разряда «странно, Π° Ρƒ мСня всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Β» (β€œit works on my machine”).

Npm Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ lock-Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматичСски Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· манифСста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, глобального состояния npm registry ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° установки зависимостСй npm. Однако содСрТимоС Ρ„Π°ΠΉΠ»Π° Π²ΠΏΠΎΠ»Π½Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π΄Π°ΠΆΠ΅ Π½Π° этапС code review. Diff lock-Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ зависимости Π² Π΄Π΅Ρ€Π΅Π²Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹. НавСрноС, Π½Π΅Ρ‚ смысла ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ измСнСния этого Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΉ это ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² поискС Π²ΠΈΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΊΡƒΡ‡Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π°Π±ΠΎΡ‚Π°Π» эффСктивнСС ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±Ρ‹Π» ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ зависимости ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π°Ρ‰Π΅ (Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ссли Ρƒ вас обновилось Ρ‚Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Π΄Π΅Ρ€Π΅Π²Π΅ зависимостСй, Π° Π½Π΅ сотня).

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим содСрТимоС Ρ„Π°ΠΉΠ»Π° package-lock.json Π² тСстовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π³Π΄Π΅ установлСна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ β€” express.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» содСрТит ΠΏΠΎΡ‡Ρ‚ΠΈ 400 строк, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ получился достаточно Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ наглядным, я ΠΏΠΎΠΊΠ°Π·Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²Π° зависимостСй.

package-lock.json

{
  "name": "test",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "express": {
      "version": "4.17.1",
      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
      "integrity": "sha512-mHJ9O79RqluphRr…7xlEMXTnYt4g==",
      "requires": {
        "debug": "2.6.9",
        "send": "0.17.1"
      }
    },
    "debug": {
      "version": "2.6.9",
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
      "integrity": "sha512-bC7ElrdJaJnPbAP…eAPVMNcKGsHMA==",
      "requires": {
        "ms": "2.0.0"
      }
    },
    "ms": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
    },
    "send": {
      "version": "0.17.1",
      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
      "integrity": "sha512-BsVKsiGcQMFwT8U…cNuE3V4fT9sAg==",
      "requires": {
        "debug": "2.6.9",
        "depd": "~1.1.2",
        "destroy": "~1.0.4",
        "encodeurl": "~1.0.2",
        "escape-html": "~1.0.3",
        "etag": "~1.8.1",
        "fresh": "0.5.2",
        "http-errors": "~1.7.2",
        "mime": "1.6.0",
        "ms": "2.1.1",
        "on-finished": "~2.3.0",
        "range-parser": "~1.2.1",
        "statuses": "~1.5.0"
      },
      "dependencies": {
        "ms": {
          "version": "2.1.1",
          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
          "integrity": "sha512-tgp+dl5cGk28utY…YaD/kOWhYQvyg=="
        }
      }
    }
  }
}

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ. НачнСм с основных ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… свойств:

  • name ΠΈ version β€” Ρ‚ΡƒΡ‚ всё просто, это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ вСрсия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ· Π΅Π³ΠΎ манифСста Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания lock-Ρ„Π°ΠΉΠ»Π°.
  • lockfileVersion β€” это вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдставлСн lock-Ρ„Π°ΠΉΠ». Она Π½ΡƒΠΆΠ½Π° для Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ npm Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния.
  • dependencies β€” ΠΏΠΎΠ»Π½ΠΎΠ΅ плоскоС Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°; ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” дСскриптор.

ДСскриптор ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятой зависимости выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • version β€” точная вСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ установки.
  • resolved β€” URL ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² рССстрС npm, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ Π±Ρ‹Π» скачан.
  • integrity β€” SHA-Ρ…ΡΡˆ ΠΏΠ°ΠΊΠ΅Ρ‚Π°; провСрочная сумма, которая позволяСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Π»ΠΎ внСсСно ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Π² процСссС скачивания, Ρ‚Π°ΠΊ ΠΈ Π½Π° сторонС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ). Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ элСмСнт бСзопасности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с npm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π½Π΅ смоТСт ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ нСсоотвСтствия Π²Ρ‹Π·ΠΎΠ² npm install Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Π½ с ошибкой.
  • requires β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ зависимости (копируСтся ΠΈΠ· поля dependencies манифСста стороннСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°). ΠšΠ»ΡŽΡ‡ являСтся Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ вСрсий semver.
  • dependencies β€” Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ полю dependencies, описанному Π²Ρ‹ΡˆΠ΅. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ рСкурсивно ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ структуру Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π² Π΄Π΅Ρ€Π΅Π²Π΅ зависимостСй содСрТится ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий.
  • dev β€” Ссли true, Ρ‚ΠΎ эта Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ установки зависимостСй).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ express (наша прямая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ) зависит ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° debug, Π° Ρ‚ΠΎΡ‚, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‚ [email protected]. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΏΠ°ΠΊΠ΅Ρ‚ send Ρ‚Π°ΠΊΠΆΠ΅ зависит ΠΎΡ‚ ms, Π½ΠΎ ΡƒΠΆΠ΅ вСрсии 2.1.1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ node_modules ΠΏΠ°ΠΊΠ΅Ρ‚ ms Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π΄Π²Π° Ρ€Π°Π·Π° (Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий), Π½ΠΎ, Π² силу ΡΠ»ΠΎΠΆΠΈΠ²ΡˆΠΈΡ…ΡΡ ΠΏΡ€Π°Π²ΠΈΠ» Π² Node.js, Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны Π² ΠΊΠΎΡ€Π½Π΅. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΎΠ΄Π½Π° вСрсия устанавливаСтся Π² ΠΊΠΎΡ€Π΅Π½ΡŒ ([email protected]), Π° вторая β€” Π² ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° send ([email protected]). Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² lock-Ρ„Π°ΠΉΠ»Π΅. Π’ Ρ‚ΠΎΠΌ числС благодаря этому достигаСтся ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ node_modules.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ зависимостСй ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ….

Π₯отя структура lock-Ρ„Π°ΠΉΠ»Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ читаСтся ΠΈ довольно понятна, нСльзя Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот Ρ„Π°ΠΉΠ» гСнСрируСтся автоматичСски. НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΊΠΈ, ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. ПослС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ обновлСния lock-Ρ„Π°ΠΉΠ»Π° ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ потСряны.

Если нСсколько Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² трудятся Π² ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ lock-Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ merge-ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π² Git. Π’ этом случаС достаточно просто ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ манифСста (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ), Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ npm install: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² автоматичСски исправит ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² lock-Ρ„Π°ΠΉΠ»Π΅.

Если Π²Π°ΠΌ Π½Π΅ хочСтся ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² lock-Ρ„Π°ΠΉΠ»Π°Ρ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ merge-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с npm. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ package-lock.json автоматичСски. Однако, Ссли ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π² манифСстС, Ρ‚ΠΎ Π²Π°ΠΌ всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ npm install.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ merge-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для npm ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

npx npm-merge-driver install -g

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ Git Π² консоли Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ:

npm WARN conflict A git conflict was detected in package-lock.json.
Attempting to auto-resolve. Auto-merging package-lock.json

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с lock-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π½Π΅ трСбуСтся ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ особых дСйствий со стороны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, npm автоматичСски обновляСт lock-Ρ„Π°ΠΉΠ», ΠΊΠΎΠ³Π΄Π° Π² этом Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. НапримСр, Ссли Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm install lodash, Ρ‚ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ npm Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² манифСст ΠΈ установит Π΅Ρ‘, ΠΎΠ½ автоматичСски ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ lock-Ρ„Π°ΠΉΠ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, npm всСгда слСдит, Ρ‡Ρ‚ΠΎΠ±Ρ‹ lock-Ρ„Π°ΠΉΠ» Π±Ρ‹Π» Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

Однако Ссли Π²Ρ‹ вноситС измСнСния Π² манифСст ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, добавляя Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Β«Π΄Ρ€ΠΈΡ„Ρ‚Β» (рассинхронизация) ΠΌΠ΅ΠΆΠ΄Ρƒ манифСстом ΠΈ lock-Ρ„Π°ΠΉΠ»ΠΎΠΌ. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² достаточно ΡƒΠΌΡ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ этот Π΄Ρ€ΠΈΡ„Ρ‚: ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm install, npm ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ lock-Ρ„Π°ΠΉΠ»Π°, ΠΈ Ссли ΠΎΠ½ устарСл, Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² автоматичСски ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ lock-Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· манифСста.

Как я сказал Π²Ρ‹ΡˆΠ΅, Ссли npm ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ отставаниС lock-Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚ манифСста, Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ обновлСнию lock-Ρ„Π°ΠΉΠ»Π° ΠΈ установкС зависимостСй ΠΈΠ· манифСста. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎ, ΠΈ Π΄Π°ΠΆΠ΅ опасно Π² контСкстС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° CI/CD, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΈΠ·-Π·Π° ΡΠ»Π΅Ρ‚Π΅Π²ΡˆΠ΅ΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ зависимостСй.

Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ происходило, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ npm Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm ci. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ npm install, эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ обновляСт lock-Ρ„Π°ΠΉΠ». Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ отсутствуСт ΠΈΠ»ΠΈ устарСл lock-Ρ„Π°ΠΉΠ», Ρ‚ΠΎ npm ci Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΠ΄ ошибки ΠΈ ΠΏΡ€Π΅Ρ€Π²Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°, гарантируя, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ Π½Π΅ случится (ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Fail-fast). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, npm ci ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ удаляСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ node_modules ΠΏΠ΅Ρ€Π΅Π΄ установкой зависимостСй, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ установку Π½Π° чистый лист.

По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm install Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° CI/CD, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ npm ci вмСсто Π½Π΅Π΅. Π˜Π΄ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ это прямо сСйчас! (я ΠΏΠΎΠ΄ΠΎΠΆΠ΄Ρƒ).

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ особСнности использования lock-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠŸΠ΅Ρ€Π²ΠΎΠ΅, ΠΎ Ρ‡Ρ‘ΠΌ стоит ΡΠΊΠ°Π·Π°Ρ‚ΡŒ: Ρ„Π°ΠΉΠ» package-lock.json Π½Π΅ публикуСтся Π² npm registry. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚Π΅ свой ΠΏΠ°ΠΊΠ΅Ρ‚ Π² рССстр npm (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°), Ρ‚ΠΎ содСрТимоС вашСго lock-Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ влияния Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй ΠΏΡ€ΠΈ установкС вашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Ρ‡Π΅ΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’ этом случаС ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ содСрТимоС вашСго манифСста. Π­Ρ‚ΠΎ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ: Ссли Π±Ρ‹ каТдая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π»Π° свои зависимости, Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΅Ρ‰Ρ‘ большС (ΠΊΡƒΠ΄Π° ΡƒΠΆ большС?) ΠΈ содСрТало ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π΄ΡƒΠ±Π»Π΅ΠΉ. АдСкватно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ зависимостями стало Π±Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Однако Π² npm Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° npm shrinkwrap. Она создаСт Ρ„Π°ΠΉΠ» npm-shrinkwrap.json Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ lock-Ρ„Π°ΠΉΠ»ΠΎΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ сСмантикой. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ package-lock.json, ΠΎΠ½ Ρ‚Π°ΠΊΠΈ публикуСтся Π² рССстр npm ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ нСпосрСдствСнноС влияниС Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй ΠΏΡ€ΠΈ установкС вашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ЀактичСски, ΠΎΠ½ Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй вашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π΄Π°ΠΆΠ΅ Ссли Ρ‚ΠΎΡ‚ устанавливаСтся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Как я сказал Π²Ρ‹ΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π²Ρ€Π΅Π΄Π½ΠΎ, поэтому Π½Π΅ стоит этого Π΄Π΅Π»Π°Ρ‚ΡŒ. Однако, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Node.js, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΎΠ³ webpack, gulp, create-react-app ΠΈ Ρ‚. Π΄.). Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° устанавливаСтся прСимущСствСнно глобально Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (npm i -g), Ρ‚ΠΎ использованиС shrinkwrap-Ρ„Π°ΠΉΠ»Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° машинС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ зависимости, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° вашСй машинС. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ явныС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΎΠΏΠ°ΡΠ°Ρ‚ΡŒΡΡ Π΄Ρ€ΠΈΡ„Ρ‚Π° зависимостСй Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ npm shrinkwrap. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях я Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ„Π°ΠΉΠ» npm-shrinkwrap.json ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ Ρ„Π°ΠΉΠ»ΠΎΠΌ package-lock.json. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ достаточно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π’Π°ΠΆΠ½Ρ‹ΠΌ этапом Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ являСтся Π΅Π³ΠΎ тСстированиС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ внСшниС условия, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ваша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ зафиксируСтС прямыС зависимости, Π²Ρ‹ Π½Π΅ смоТСтС Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ (Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ shrinkwrap, Π½ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ выяснили, Ρ‡Ρ‚ΠΎ это плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°).

По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ срСду, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ со свСТими вСрсиями всСх зависимостСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΈ свСТих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сломаСтся. Однако, Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ lock-Ρ„Π°ΠΉΠ» Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ постоянно ΠΎΡ‚Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ вСрсии Π²Π°ΡˆΠΈΡ… зависимостСй Π½Π°Π·Π°Π΄, Π½Π΅ давая Π²Π°ΠΌ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с самыми свСТими вСрсиями всСх зависимостСй (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ навСрняка Π±ΡƒΠ΄ΡƒΡ‚ Ρƒ Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ). Π›ΠΈΠ±ΠΎ Π²Π°ΠΌ придСтся постоянно Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ npm update ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ тСстом.

Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ этим, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ совСтуСт Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ lock-Ρ„Π°ΠΉΠ»Ρ‹ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Однако, я ΡΡ‡ΠΈΡ‚Π°ΡŽ это слишком Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ совСтом. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Ρ… runtime-зависимостСй вашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΅Ρ‰Π΅ ΠΈ dev-зависимости. Если Π²Ρ‹ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ lock-Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ ваши dev-зависимости Π²Ρ‹ΠΉΠ΄ΡƒΡ‚ ΠΈΠ·-ΠΏΠΎΠ΄ контроля, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ потСряСтС Π½Π΅ΠΊΠΈΠΉ островок ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π‘ΠΎΠ»Π΅Π΅ подходящим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π° ΠΌΠΎΠΉ взгляд, Π±Ρ‹Π»Π° Π±Ρ‹ рСорганизация ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° CI/CD Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ тСстировался Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Π΅Π· использования lock-Ρ„Π°ΠΉΠ»Π°, ΠΏΡƒΡ‚Π΅ΠΌ установки самых свСТих доступных зависимостСй. Π‘ΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ (Ссли трСбуСтся) ΠΌΠΎΠΆΠ½ΠΎ ΠΈ с участиСм lock-Ρ„Π°ΠΉΠ»Π° (для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… этапа Π² вашСм CI/CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅).

Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² lock-Ρ„Π°ΠΉΠ»Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ чувство раздраТСния, Π²ΠΈΠ΄ΠΈΠΌΠΎ, ΠΈΠ·-Π·Π° нСпонимания ΠΈΡ… прСдназначСния ΠΈΠ»ΠΈ особСнностСй ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’Π°ΠΊΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ норовят Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ package-lock.json Π² .gitignore ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ npm, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ lock-Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ этом ΠΎΠ½ΠΈ (часто сами Ρ‚ΠΎΠ³ΠΎ Π½Π΅ понимая) ΠΆΠ΅Ρ€Ρ‚Π²ΡƒΡŽΡ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ своСго прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ зависимостСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Часто эти ΠΆΠ΅ люди Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ строго ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ вСрсии зависимостСй Π² основном манифСстС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ отдавая сСбС ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ создаСт иллюзию Π΅Ρ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π― ΡƒΠΆΠ΅ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ инструмСнт Π½Π΅ ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, тСряя Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, которая обСспСчиваСтся, Π² Ρ‚ΠΎΠΌ числС, ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ сСмантичСского вСрсионирования.

НадСюсь, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π»ΡƒΡ‡ΡˆΠ΅ понимая, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ эти ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, Π²Ρ‹ смоТСтС эффСктивнСС Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Π·Π°Π΄Π°Ρ‡Π° lock-Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ навсСгда Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС зависимости ΠΈ большС Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΈΡ… Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ, Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈΡ… установки ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈΡ… обновлСния.

Π—Π°Π»ΠΎΠ³ высокого качСства, поддСрТиваСмости ΠΈ удобства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² частом ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ зависимостСй. Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ зависимости малСнькими порциями ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… Π²Ρ‹Ρ…ΠΎΠ΄Π°. Diff lock-Ρ„Π°ΠΉΠ»Π° всСгда ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ обновилось. Если ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ нСбольшим, Ρ‚ΠΎ Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ смоТСтС Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Если ΠΆΠ΅ послС обновлСния Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‚ΠΎ, скорСС всСго, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄Π½Π°, ΠΈ Π΅Ρ‘ Π±ΡƒΠ΄Π΅Ρ‚ нСслоТно ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ зависимости, Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° малСнькиС части. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Π²ΠΎΡ€ΠΎΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ€Π°Π·Π½ΠΎΠΉ стСпСни тяТСсти, Π° Π² случаС возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (Π° ΠΎΠ½Π°, скорСС всСго, ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Π½Π΅ ΠΎΠ΄Π½Π°) Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС (diff здСсь ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ бСсполСзСн Π² силу Π΅Π³ΠΎ гигантского Ρ€Π°Π·ΠΌΠ΅Ρ€Π°).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ запускайтС ваши зависимости, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ рСгулярно, Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ это Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΡƒ, Ρ‚ΠΎΠ³Π΄Π° ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΆΠ΅ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Π΅ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ: Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΌΠ°ΠΆΠΎΡ€Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‡Π΅ΠΌ Π½Π° нСсколько сразу.

ΠœΡ‹ рассмотрСли ΡΡ‚ΠΎΠ»ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ инструмСнт ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ надСТности ΠΈ бСзопасности управлСния зависимостями, ΠΊΠ°ΠΊ lock-Ρ„Π°ΠΉΠ»Ρ‹ npm. ИспользованиС этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ сущСствСнно ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство ΠΈ удобство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ постС я Π΅Ρ‰Π΅ дальшС ΡƒΠ³Π»ΡƒΠ±Π»ΡŽΡΡŒ Π² вопросы бСзопасности npm.

Если Π²Π°ΠΌ понравился ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Ρ‚ΠΎ, поТалуйста, ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π»Π°ΠΉΠΊΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° наш Π±Π»ΠΎΠ³ ΠΈ Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ссылками с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ. Π’Π°ΠΊ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ наша Ρ€Π°Π±ΠΎΡ‚Π° вострСбована, ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ вас Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ вопросы ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, Ρ‚ΠΎ Π½Π΅ Π±ΠΎΠΉΡ‚Π΅ΡΡŒ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, я с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΡƒ участиС Π² обсуТдСнии ΠΈ ΡƒΡ‡Ρ‚Ρƒ ваши поТСлания Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… постах.

npm, Ρ„Π°ΠΉΠ»Ρ‹ package.json ΠΈ package-lock.json / Π‘Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ RUVDS.com / Π₯Π°Π±Ρ€

БСгодня ΠΌΡ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° руководства ΠΏΠΎ Node.js. Π’ этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ ΠΌΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ± npm Π° Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим особСнности Ρ„Π°ΠΉΠ»ΠΎΠ²

package.json

ΠΈ

package-lock.json

.

[Π‘ΠΎΠ²Π΅Ρ‚ΡƒΠ΅ΠΌ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ] Π”Ρ€ΡƒΠ³ΠΈΠ΅ части Ρ†ΠΈΠΊΠ»Π°

Π§Π°ΡΡ‚ΡŒ 1:

ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΈ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π§Π°ΡΡ‚ΡŒ 2:

JavaScript, V8, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π§Π°ΡΡ‚ΡŒ 3:

Π₯остинг, REPL, Ρ€Π°Π±ΠΎΡ‚Π° с консолью, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

Π§Π°ΡΡ‚ΡŒ 4:

npm, Ρ„Π°ΠΉΠ»Ρ‹ package.json ΠΈ package-lock.json

Π§Π°ΡΡ‚ΡŒ 5:

npm ΠΈ npx

Π§Π°ΡΡ‚ΡŒ 6:

Ρ†ΠΈΠΊΠ» событий, стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹

Π§Π°ΡΡ‚ΡŒ 7:

асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π§Π°ΡΡ‚ΡŒ 8:

Руководство ΠΏΠΎ Node.js, Ρ‡Π°ΡΡ‚ΡŒ 8: ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ HTTP ΠΈ WebSocket

Π§Π°ΡΡ‚ΡŒ 9:

Руководство ΠΏΠΎ Node.js, Ρ‡Π°ΡΡ‚ΡŒ 9: Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой

Π§Π°ΡΡ‚ΡŒ 10:

Руководство ΠΏΠΎ Node.js, Ρ‡Π°ΡΡ‚ΡŒ 10: стандартныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, NODE_ENV
Полная PDF-вСрсия руководства ΠΏΠΎ Node.js

ΠžΡΠ½ΠΎΠ²Ρ‹ npm

Npm (node package manager) β€” это ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Node.js. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сСйчас Π² npm имССтся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»ΡƒΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ самым большим Π² ΠΌΠΈΡ€Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°, написанного Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС. Π­Ρ‚ΠΎ позволяСт Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² npm ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ практичСски Π»ΡŽΠ±Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ npm создавался ΠΊΠ°ΠΊ систСма управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ для Node.js, Π½ΠΎ Π² наши Π΄Π½ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° JavaScript. Для взаимодСйствия с рССстром npm ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ одноимённая ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая Π΄Π°Ρ‘Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство возмоТностСй.

▍Загрузка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

npm

ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· рССстра. НиТС ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅Ρ‘ использования.

▍Установка всСх зависимостСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Если Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ имССтся Ρ„Π°ΠΉΠ»

package.json

, Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС зависимости этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

npm install

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ всё, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, ΠΈ помСстит эти ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ

node_modules

, создав Π΅Ρ‘ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½Π° Π½Π΅ сущСствуСт Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

▍Установка ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

npm install <package-name>

Часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π΅ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΎΡ‚ простом Π²ΠΈΠ΄Π΅, Π° с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ. Рассмотрим ΠΈΡ…:

  • Π€Π»Π°Π³ --save позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись ΠΎ Π½Ρ‘ΠΌ Π² Ρ€Π°Π·Π΄Π΅Π» dependencies Ρ„Π°ΠΉΠ»Π° package.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΈ зависимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ основного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, ΠΎΠ½ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ…ΠΎΠ΄Π΅ Π΅Π³ΠΎ развёртывания Π½Π° сСрвСрС (послС Π²Ρ‹Ρ…ΠΎΠ΄Π° npm 5 записи ΠΎΠ± устанавливаСмых ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ зависимостСй Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ автоматичСски, ΠΈ Π±Π΅Π· использования этого Ρ„Π»Π°Π³Π°).
  • Π€Π»Π°Π³ --save-dev позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись ΠΎ Π½Ρ‘ΠΌ Π² Ρ€Π°Π·Π΄Π΅Π», содСрТащий ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ зависимостСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ β€” ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ€ΠΎΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для тСстирования, Π½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹) Ρ„Π°ΠΉΠ»Π° package.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся devDependencies.

β–ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Для обновлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² слуТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

npm update

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, npm ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… вСрсий, ΠΈ, Ссли Π½Π°ΠΉΠ΄Ρ‘Ρ‚ ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ вСрсии, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ограничСниям Π½Π° вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π²

package.json

, установит ΠΈΡ….

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚:

npm update <package-name>

▍Загрузка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… вСрсий

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ стандартной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², npm ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… вСрсий. Π’ частности, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимы лишь с Π½Π΅ΠΊΠΈΠΌΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ссли Π±Ρ‹ зависимости Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ Π±Ρ‹ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° вСрсий, это ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π² ситуациях, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π°ΠΌ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ самый свСТий Ρ€Π΅Π»ΠΈΠ· этого ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½ΠΎ оказываСтся, Ρ‡Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ имССтся ошибка. ОТидая Π²Ρ‹Ρ…ΠΎΠ΄Π° исправлСнной вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ старым Π½ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ вСрсии Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΠΎΠ»Π΅Π·Π½Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΊΠΎΠ³Π΄Π° всС Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² точности ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ вСрсии Ρ‚Π°ΠΊ ΠΆΠ΅ осущСствляСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ, ΠΏΡƒΡ‚Ρ‘ΠΌ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° package.json.

Π’ΠΎ всСх этих случаях Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°. Npm слСдуСт стандарту сСмантичСского вСрсионирования (semver).

▍Запуск скриптов

Π€Π°ΠΉΠ»

package.json

ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ описания ΠΊΠΎΠΌΠ°Π½Π΄ (скриптов), Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ конструкции:

npm <task-name>

НапримСр, Π²ΠΎΡ‚ ΠΊΠ°ΠΊ выглядят ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ скриптов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ„Π°ΠΉΠ»Π°:

{
 Β "scripts": {
 Β Β Β "start-dev": "node lib/server-development",
 Β Β Β "start": "node lib/server-production"
 Β }
}

Π’Π΅ΡΡŒΠΌΠ° распространСно использованиС этой возмоТности для запуска Webpack:

{
 Β "scripts": {
 Β Β Β "watch": "webpack --watch --progress --colors --config webpack.conf.js",
 Β Β Β "dev": "webpack --progress --colors --config webpack.conf.js",
 Β Β Β "prod": "NODE_ENV=production webpack -p --config webpack.conf.js",
 Β }
}

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‡Ρ€Π΅Π²Π°Ρ‚Ρ‹ΠΉ ошибками, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ простыми конструкциями:

$ npm watch
$ npm dev
$ npm prod

β–ΠšΡƒΠ΄Π° npm устанавливаСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹?

ΠŸΡ€ΠΈ установкС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с использованиСм npm (ΠΈΠ»ΠΈ

yarn

) доступны Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° установки: локальная ΠΈ глобальная.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° для установки ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ npm install lodash, ΠΏΠ°ΠΊΠ΅Ρ‚ оказываСтся Π² ΠΏΠ°ΠΏΠΊΠ΅ node_modules, располоТСнной Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, npm Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ запись ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ lodash Π² Ρ€Π°Π·Π΄Π΅Π» dependencies Ρ„Π°ΠΉΠ»Π° package.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ имССтся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² выполняСтся с использованиСм Ρ„Π»Π°Π³Π° -g:

npm install -g lodash

Выполняя Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, npm Π½Π΅ устанавливаСт ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ВмСсто этого ΠΎΠ½ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Π½Π΅ΠΊΠΎΠ΅ глобальноС располоТСниС. ΠšΡƒΠ΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ эти Ρ„Π°ΠΉΠ»Ρ‹?

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

npm root -g

Π’ macOS ΠΈΠ»ΠΈ Linux Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

/usr/local/lib/node_modules

. Π’ Windows это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅

C:\Users\YOU\AppData\Roaming\npm\node_modules

.

Однако Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для управлСния вСрсиями Node.js nvm, ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

Π―, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ nvm, ΠΈ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° сообщаСт ΠΌΠ½Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ адрСсу: /Users/flavio/.nvm/versions/node/v8.9.0/lib/node_modules.

β–Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², установлСнных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, установлСнныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm, локально ΠΈΠ»ΠΈ глобально, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π² ΠΏΠ°ΠΏΠΊΠΈ

node_modules

? ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ установили ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ

lodash

, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ мноТСство Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅:

npm install lodash

Вакая ΠΊΠΎΠΌΠ°Π½Π΄Π° установит Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

node_modules

.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² своём ΠΊΠΎΠ΄Π΅, достаточно ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ require:

const _ = require('lodash')

Как Π±Ρ‹Ρ‚ΡŒ, Ссли ΠΏΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой исполняСмый Ρ„Π°ΠΉΠ»?

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС исполняСмый Ρ„Π°ΠΉΠ» ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² ΠΏΠ°ΠΏΠΊΡƒ node_modules/.bin/ folder.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ выглядит Ρ€Π°Π±ΠΎΡ‚Π° этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ, установив ΠΏΠ°ΠΊΠ΅Ρ‚ cowsay. Он прСдставляСт собой ΡˆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ этому ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ тСкст, Π² консоли, Π² стилС ASCII-Π°Ρ€Ρ‚Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ€ΠΎΠ²Ρ‹, которая «произносит» ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ тСкст. Β«ΠžΠ·Π²ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒΒ» тСкст ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сущСства.

Π˜Ρ‚Π°ΠΊ, послС установки ΠΏΠ°ΠΊΠ΅Ρ‚Π° с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ npm install cowsay, ΠΎΠ½, вмСстС со своими зависимостями, ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² node_modules. А Π² ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ .bin Π±ΡƒΠ΄ΡƒΡ‚ записаны символичСскиС ссылки Π½Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ cowsay.

Как ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ, для Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ввСсти Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ./node_modules/.bin/cowsay, это Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ npx, срСдством для запуска исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² npm-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΌ Π² npm начиная с вСрсии 5.2. А ΠΈΠΌΠ΅Π½Π½ΠΎ, Π² нашСм случаС понадобится такая ΠΊΠΎΠΌΠ°Π½Π΄Π°:

npx cowsay

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ npx Π½Π°ΠΉΠ΄Ρ‘Ρ‚ автоматичСски.

Π€Π°ΠΉΠ» package.json

Π€Π°ΠΉΠ»

package.json

являСтся ваТнСйшим элСмСнтов мноТСства ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², основанных Π½Π° экосистСмС Node.js. Если Π²Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π½Π° JavaScript, Π±Ρ‹Π»Π° Π»ΠΈ это сСрвСрная ΠΈΠ»ΠΈ клиСнтская Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ‚ΠΎ Π²Ρ‹, навСрняка, ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ с этим Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½? Π§Ρ‚ΠΎ Π²Π°ΠΌ слСдуСт ΠΎ Π½Ρ‘ΠΌ Π·Π½Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ возмоТности ΠΎΠ½ Π²Π°ΠΌ Π΄Π°Ρ‘Ρ‚?

Package.json прСдставляСт собой Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Ρ„Π°ΠΉΠ»Π°-манифСста для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Он Π΄Π°Ρ‘Ρ‚ Π² распоряТСниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° мноТСство Ρ€Π°Π·Π½ΠΎΠΏΠ»Π°Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй. НапримСр, ΠΎΠ½ прСдставляСт собой Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ настроСк для ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ являСтся Ρ‚Π΅ΠΌ мСстом, ΠΊΡƒΠ΄Π° npm ΠΈ yarn Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ свСдСния ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… ΠΈ вСрсиях установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

▍Бтруктура Ρ„Π°ΠΉΠ»Π°

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°

package.json

:

{
}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΎΠ½ пуст. НСт Тёстких Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ для Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ прилоТСния. ЕдинствСнноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ структурС Ρ„Π°ΠΉΠ»Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JSON. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС этот Ρ„Π°ΠΉΠ» Π½Π΅ смоТСт Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΅Π³ΠΎ содСрТимому.

Если Π²Ρ‹ создаётС Node.js-ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· npm, Ρ‚ΠΎ всё Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ мСняСтся, ΠΈ Π² вашСм package.json Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅.

Π’ΠΎΡ‚ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ package.json:

{
 Β "name": "test-project"
}

Π’ Π½Ρ‘ΠΌ Π·Π°Π΄Π°Π½ΠΎ свойство

name

, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся имя прилоТСния ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТатся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ находится этот Ρ„Π°ΠΉΠ».4.1.0″
Β },
Β «engines»: {
Β Β Β «node»: «>= 6.0.0»,
Β Β Β «npm»: «>= 3.0.0»
Β },
Β «browserslist»: [
Β Β Β «> 1%»,
Β Β Β «last 2 versions»,
Β Β Β «not ie <= 8»
Β ]
}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‚ΡƒΡ‚ прямо-Ρ‚Π°ΠΊΠΈ нСмСряно всСго интСрСсного. А ΠΈΠΌΠ΅Π½Π½ΠΎ, здСсь ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • name β€” Π·Π°Π΄Π°Ρ‘Ρ‚ имя прилоТСния (ΠΏΠ°ΠΊΠ΅Ρ‚Π°).
  • version β€” содСрТит свСдСния ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии прилоТСния.
  • description β€” ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС прилоТСния.
  • main β€” Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • private β€” Ссли Π΄Π°Π½Π½ΠΎΠ΅ свойство установлСно Π² true, это позволяСт ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² npm.
  • scripts β€” Π·Π°Π΄Π°Ρ‘Ρ‚ Π½Π°Π±ΠΎΡ€ Node.js-скриптов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.
  • dependencies β€” содСрТит список npm-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • devDependencies β€” содСрТит список npm-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.
  • engines β€” Π·Π°Π΄Π°Ρ‘Ρ‚ список вСрсий Node.js, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • browserlist β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния списка Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² (ΠΈ ΠΈΡ… вСрсий), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ВсС эти свойства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ npm Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами, примСняСмыми Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° прилоТСния.

▍Бвойства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² package.json

ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ свойствах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²

package.json

. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΏΠ°ΠΊΠ΅Ρ‚Β», Π½ΠΎ всё, Ρ‡Ρ‚ΠΎ сказано ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, справСдливо ΠΈ для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ планируСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ опишСм, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ лишь для Π½ΡƒΠΆΠ΄ рСпозитория npm, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΊΠΎΠ΄ΠΎΠΌ, Π²Ρ€ΠΎΠ΄Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ npm.

Бвойство name

Бвойство

name

Π·Π°Π΄Π°Ρ‘Ρ‚ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"name": "test-project"

Имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‡Π΅ 214 символов, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· прописных Π±ΡƒΠΊΠ², дСфисов (

-

) ΠΈ символов подчёркивания (

_

).

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ограничСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ публикуСтся Π² npm, Π΅Π³ΠΎ имя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для формирования URL страницы ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Если Π²Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° GitHub, Π² ΠΎΠ±Ρ‰Π΅ΠΌ доступС, Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° являСтся имя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ GitHub-рСпозитория.

Бвойство author

Бвойство

author

содСрТит свСдСния ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

{
 Β "author": "Flavio Copes <[email protected]> (https://flaviocopes.com)"
}

Оно ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

{
 Β "author": {
 Β Β Β "name": "Flavio Copes",
 Β Β Β "email": "[email protected]",
 Β Β Β "url": "https://flaviocopes.com"
 Β }
}

Бвойство contributors

Бвойство

contributors

содСрТит массив со свСдСниями ΠΎ Π»ΡŽΠ΄ΡΡ…, Π²Π½Ρ‘ΡΡˆΠΈΡ… Π²ΠΊΠ»Π°Π΄ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

{
 Β "contributors": [
 Β Β Β "Flavio Copes <[email protected]> (https://flaviocopes.com)"
 Β ]
}

Π­Ρ‚ΠΎ свойство ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ:

{
 Β "contributors": [
 Β Β Β {
 Β Β Β Β Β "name": "Flavio Copes",
 Β Β Β Β Β "email": "[email protected]",
 Β Β Β Β Β "url": "https://flaviocopes.com"
 Β Β Β }
 Β ]
}

Бвойство bugs

Π’ свойствС

bugs

содСрТится ссылка Π½Π° Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, вСсьма вСроятно Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ такая ссылка Π±ΡƒΠ΄Π΅Ρ‚ вСсти Π½Π° страницу систСмы отслСТивания ошибок GitHub:

{
 Β "bugs": "https://github.com/flaviocopes/package/issues"
}

Бвойство homepage

Бвойство

homepage

позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ домашнюю страницу ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

{
 Β "homepage": "https://flaviocopes.com/package"
}

Бвойство version

Бвойство

version

содСрТит свСдСния ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"version": "1.0.0"

ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ значСния этого свойства Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ

сСмантичСского вСрсионирования

. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π² частности, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ вСрсии всСгда прСдставлСн трСмя Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ: x.x.x.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число β€” это маТорная вСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ β€” минорная вСрсия, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ β€” ΠΏΠ°Ρ‚Ρ‡-вСрсия.

ИзмСнСниС этих чисСл нСсёт Π² сСбС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ смысл. Π’Π°ΠΊ, Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ лишь ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ошибки, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ значСния ΠΏΠ°Ρ‚Ρ‡-вСрсии. Если Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, измСнСния, внСсённыС Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ β€” Ρ‚ΠΎ мСняСтся минорная вСрсия. Π’ ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Ρ… вСрсиях ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ эти ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ нСсовмСстимыми с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Ρ… вСрсий.

Бвойство license

Бвойство

license

содСрТит свСдСния ΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"license": "MIT"

Бвойство keywords

Бвойство

keywords

содСрТит массив ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"keywords": [
 Β "email",
 Β "machine learning",
 Β "ai"
]

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ людям Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ, ΠΏΡ€ΠΈ поискС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, позволяСт Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ быстро ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΡ€ΠΈ просмотрС сайта npm.

Бвойство description

Бвойство

description

содСрТит ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"description": "A package to work with strings"

Π­Ρ‚ΠΎ свойство особСнно Π²Π°ΠΆΠ½ΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² npm, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ сайта npm ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Бвойство repository

Бвойство

repository

ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Π³Π΄Π΅ находится Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"repository": "github:flaviocopes/testing",

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ значСния этого свойства имССтся прСфикс

github

. Npm ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ прСфиксы ΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… популярных сСрвисов ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°:

"repository": "gitlab:flaviocopes/testing",
"repository": "bitbucket:flaviocopes/testing",

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° систСму контроля вСрсий ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈ Π² явном Π²ΠΈΠ΄Π΅:

"repository": {
 Β "type": "git",
 Β "url": "https://github.com/flaviocopes/testing.git"
}

Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ систСмы контроля вСрсий:

"repository": {
 Β "type": "svn",
 Β "url": "..."
}

Бвойство main

Бвойство

main

Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚:

"main": "src/main.js"

Когда ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ поиск Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ экспортируСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Бвойство private

Бвойство

private

, установлСнноС Π²

true

, позволяСт ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² npm:

"private": true

Бвойство scripts

Бвойство

scripts

Π·Π°Π΄Π°Ρ‘Ρ‚ список скриптов ΠΈΠ»ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ срСдствами npm:

"scripts": {
 Β "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
 Β "start": "npm run dev",
 Β "unit": "jest --config test/unit/jest.0.13.0"
}

Бвойство browserlist

Бвойство

browserlist

позволяСт ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ (ΠΈ ΠΈΡ… вСрсии) собираСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

"browserslist": [
 Β "> 1%",
 Β "last 2 versions",
 Β "not ie <= 8"
]

Π­Ρ‚ΠΈΠΌ свойством ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Babel, Autoprefixer ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты. Анализ этого списка позволяСт ΠΈΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для пСрСчислСнных Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ².

ПоказанноС здСсь Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства browserlist ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 2 ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Π΅ вСрсии всСх Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² с ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1% использования (эти Π΄Π°Π½Π½Ρ‹Π΅ бСрутся с рСсурса CanIUse.com), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ IE 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ старых вСрсий этого Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π° страницС ΠΏΠ°ΠΊΠ΅Ρ‚Π° browserlists).

▍Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² package.json настроСк для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… инструмСнтов

Π’

package.json

ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ настройки для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов Π²Ρ€ΠΎΠ΄Π΅ Babel ΠΈΠ»ΠΈ ESLint.0.13.0, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ подходят Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡-вСрсии ΠΈ ΠΌΠΈΠ½ΠΎΡ€Π½Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ, вас устроят вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π° 0.13.1, 0.14.0, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

  • *: воспользовавшись этим символом, Π²Ρ‹ сообщаСтС систСмС, Ρ‡Ρ‚ΠΎ вас устроят Π»ΡŽΠ±Ρ‹Π΅ свСТиС вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π² Ρ‚ΠΎΠΌ числС β€” Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Π΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹.
  • >: подходят Π»ΡŽΠ±Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.
  • >=: подходят Π»ΡŽΠ±Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π²Π½Ρ‹ ΠΈΠ»ΠΈ большС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.
  • <=: вас устроят ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, вСрсии ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½Ρ‹ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ мСньшС Π΅Ρ‘.
  • <: вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, вСрсии ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСньшС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.
  • =: Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ заданная вСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π°.
  • -: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° подходящих вСрсий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” 2.1.0 - 2.6.2.
  • ||: позволяСт ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ условий, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². НапримСр это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ < 2.1 || > 2.6.
  • Π•ΡΡ‚ΡŒ ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

    • отсутствиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов: Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ заданная вСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π°-зависимости ΠΈ никакая другая.
    • latest: ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ трСбуСтся самая свСТая вСрсия Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

    Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Ρ… спСцификаторов ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, задавая Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ подходящих вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²-зависимостСй. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, конструкция Π²ΠΈΠ΄Π°

    1.0.0 || >=1.1.0 <1.2.0

    ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ планируСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

    1.0.0

    , Π»ΠΈΠ±ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½

    1.1.0

    , но мСньшС

    1.2.0

    .

    Π€Π°ΠΉΠ» package-lock.json

    Π€Π°ΠΉΠ»

    package-lock.json

    ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° появлСния npm вСрсии 5. Он создаётся автоматичСски ΠΏΡ€ΠΈ установкС Node.js-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π§Ρ‚ΠΎ это Π·Π° Ρ„Π°ΠΉΠ»? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π½ΠΈΠΌ Π΄Π°ΠΆΠ΅ Ссли Π·Π½Π°Π»ΠΈ ΠΎ

    package.json

    , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сущСствуСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ дольшС Π½Π΅Π³ΠΎ.

    ЦСль этого Ρ„Π°ΠΉΠ»Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² отслСТивании Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… вСрсий установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ стопроцСнтно воспроизводимым Π² Π΅Π³ΠΎ исходном Π²ΠΈΠ΄Π΅ Π΄Π°ΠΆΠ΅ Π² случаС, Ссли Ρ‚Π΅, ΠΊΡ‚ΠΎ занимаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ.

    Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Ρ€Π΅ΡˆΠ°Π΅Ρ‚ вСсьма ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, которая Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ срСдствами package.json. Π’ package.json ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ обновлСния Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Π°ΠΌ подходят (ΠΏΠ°Ρ‚Ρ‡-вСрсии ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΎΡ€Π½Ρ‹Π΅ вСрсии) с использованиСм Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Ρ… спСцификаторов вСрсий.

    Π’ Git Π½Π΅ коммитят ΠΏΠ°ΠΏΠΊΡƒ node_modules, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹. Когда Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Ρ‚ΠΎ использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ npm install ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ, Ссли, ΠΏΡ€ΠΈ использовании спСцификатора ~ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ вСрсии Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²Ρ‹ΡˆΠ΅Π» Π΅Π³ΠΎ ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ·, установлСн Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ этот ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ·.. Если ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π° спСцификаторы Π½Π΅ использовались, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ установлСна ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ указанная вСрсия ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ, окаТСтся Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ.

    Π˜Ρ‚Π°ΠΊ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ пытаСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ npm install. ΠŸΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² окаТСтся, Ρ‡Ρ‚ΠΎ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ отличаСтся ΠΎΡ‚ исходного. Π”Π°ΠΆΠ΅ Ссли, слСдуя ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ сСмантичСского вСрсионирования, ΠΌΠΈΠ½ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹ ΠΈ ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, всС ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ошибки способны ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ°Ρ‚ΡŒ (ΠΈ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ°ΡŽΡ‚) ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

    Π€Π°ΠΉΠ» package-lock.json Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ свСдСния ΠΎ вСрсии ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ установлСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ npm Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ эти вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ npm install.

    Π­Ρ‚Π° концСпция Π½Π΅ Π½ΠΎΠ²Π°, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², примСняСмыС Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования (Π²Ρ€ΠΎΠ΄Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Composer Π² PHP) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ систСму ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹.

    Π€Π°ΠΉΠ» package-lock.json Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ являСтся общСдоступным, ΠΈΠ»ΠΈ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ занимаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° программистов, ΠΈΠ»ΠΈ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Git для развёртывания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    ВСрсии зависимостСй Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π² package-lock.json послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ npm update.

    β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° package-lock.json

    Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ продСмонстрирована структура Ρ„Π°ΠΉΠ»Π°

    package-lock.json

    , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΏΠ°ΠΊΠ΅Ρ‚ cowsay, устанавливаСмого Π² пустой ΠΏΠ°ΠΏΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ 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.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=",
     Β Β Β Β Β "requires": {
     Β Β Β Β Β Β Β "minimist": "~0.0.1",
     Β Β Β Β Β Β Β "wordwrap": "~0.0.2"
     Β Β Β Β Β }
     Β Β Β },
     Β Β Β "string-width": {
     Β Β Β Β Β "version": "2.1.1",
     Β Β Β Β Β "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.3.0.0"
     Β Β Β Β Β }
     Β Β Β },
     Β Β Β "strip-eof": {
     Β Β Β Β Β "version": "1.0.0",
     Β Β Β Β Β "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
     Β Β Β Β Β "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
     Β Β Β },
     Β Β Β "wordwrap": {
     Β Β Β Β Β "version": "0.0.3",
     Β Β Β Β Β "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
     Β Β Β Β Β "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
     Β Β Β }
     Β }
    }

    Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ этот Ρ„Π°ΠΉΠ». ΠœΡ‹ устанавливаСм ΠΏΠ°ΠΊΠ΅Ρ‚ cowsay, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

    • get-stdin
    • optimist
    • string-width
    • strip-eof

    Π­Ρ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, зависят ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², свСдСния ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΡ‚ΡŒ ΠΈΠ· свойств

    requires

    , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ…:

    • ansi-regex
    • is-fullwidth-code-point
    • minimist
    • wordwrap
    • strip-eof

    Они Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ» Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅

    version

    , Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅

    resolved

    , ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° располоТСниС ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈ строковоС свойство

    integrity

    , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

    Π˜Ρ‚ΠΎΠ³ΠΈ

    БСгодня ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ± npm ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ со структурой ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²

    package.json

    ΠΈ

    package-lock.json

    . Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π· ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ возмоТности npm ΠΈ коснёмся использования npx.

    Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Какой ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ β€” npm ΠΈΠ»ΠΈ yarn?

    Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ `package-lock.json` для быстрого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

    Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, созданной, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, я сталкивался с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ слияния Π² package-lock.json , ΠΈ ΠΌΠΎΠ΅ быстроС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ всСгда состояло Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm install . Π― Π²ΡΠ΅Ρ€ΡŒΠ΅Π· Π½Π΅ задумывался ΠΎ послСдствиях этого исправлСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΎΠ½ΠΎ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

    Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ npm воссоздал Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π» ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ?

    javascript

    node.js

    npm

    package-lock.json

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


    John Mutuma Β  Β 

    10 января 2019 Π² 07:50

    3 ΠΎΡ‚Π²Π΅Ρ‚Π°




    84

    Π”Π°, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ повлияСт Π½Π° вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ.

    1. Ссли ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ запускаСт npm install послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ git pull , Π²Ρ‹ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии зависимостСй. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ заканчиваСтся Π½Π° «but it works for me!!» ΠΈ «Π― Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для вас»

    2. Π΄Π°ΠΆΠ΅ Ссли вся ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ npm install , это всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Π² порядкС. Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ дСйствуСт ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π² Ρ‚ΠΎΠΉ части, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π½Π΅ мСняли Π³ΠΎΠ΄Π°ΠΌΠΈ. ΠΈ послС (вСроятно, довольно Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ) ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ 3-Π³ΠΎ уровня обновилась для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ основной вСрсии, ΠΈ это ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ критичСским измСнСниям.

    Π’Ρ‹Π²ΠΎΠ΄: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ удаляйтС package-lock.json . Π² вашСм случаС Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ 1

    1. ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ измСнСния Π² package-lock.json
    2. stash ваши измСнСния
    3. pull самая послСдняя вСрсия ΠΊΠΎΠ΄Π°
    4. запуститС npm install для всСх зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ
    5. ΠΎΡ‚ΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ свои измСнСния.

    ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ 2

    1. Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слияниС
    2. для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ «their changes only» ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ Π½Π° package-lock.json
    3. запуститС npm install , Ρ‡Ρ‚ΠΎΠ±Ρ‹ зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² package-lock.json
    4. Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ фиксациСй фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) слияния.

    PS Π΄Π°, для зависимостСй ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня, Ссли ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΈΡ… Π±Π΅Π· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "react": "16.1.0.0" , Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Ρƒ вас Π±Ρ‹Π»ΠΎ "moduleX": "1.0.0" Π² package-lock.json .

    Π£Π΄Π°Π»ΠΈΠ² package-lock.json ΠΈ запустив npm install , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ вСрсии 1.0.999 ΠΈΠ· moduleX, Π½Π΅ зная ΠΎΠ± этом, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ создали ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ»ΠΈ сдСлали ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (Π½Π΅ слСдуя сСмантичСскому ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ вСрсиями).

    Π’ΠΎ всяком случаС, для этого ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ стандартноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

    1. Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ package.json
    2. Запуск: npm install --package-lock-only

    https://docs.npmjs.com/настройка-npm/ΠΏΠ°ΠΊΠ΅Ρ‚-locks.html#resolving-lockfile-ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


    OZZIE Β  Β 

    05 июня 2020 в 07:35



    10

    Π― знаю, Ρ‡Ρ‚ΠΎ это старый вопрос, Π½ΠΎ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… искатСлСй Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ npm-merge-driver, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ автоматичСски Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ слияния связанных Ρ„Π°ΠΉΠ»ΠΎΠ² npm.

    ΠŸΡ€ΠΎΡΡ‚ΠΎ установитС Π΅Π³ΠΎ глобально npx npm-merge-driver install --global . ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь npm-merge-driver

    Edit: ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ заинтСрСсованы Π² использовании Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя бСспорядочно ΠΈ Π΅Π³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, хотя это ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт, Π½Π°Π΄ Π½ΠΈΠΌ всС Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


    Taha Β  Β 

    25 сСнтября 2019 Π² 12:19


    • Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» package-lock.json Π² Ρ„Π°ΠΉΠ» .gitignore?

      Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСрсии зависимостСй, установлСнных Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄Π° npm install создаСт Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ package-lock.json . Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано с Node.js v8.0.0 ΠΈ npm v5.0.0 , ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· вас, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°ΡŽΡ‚. НСсмотря Π½Π° Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Node.js ΠΈ npm ΠΎ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) этого Ρ„Π°ΠΉΠ»Π°,…

    • Никакого эффСкта ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ git diff — ‘:(exclude)package-lock.json’

      Π― Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ diff, Π½ΠΎ Π±Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ ΠΈ являСтся сгСнСрированным Ρ„Π°ΠΉΠ»ΠΎΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного для мСня Ρ‚Π°ΠΌ Π½Π΅Ρ‚. Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΎΠ±Π° : git diff — ‘:(exclude)package-lock.json’ git diff — ‘:!package-lock.json’ Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ просто Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄. Π§Ρ‚ΠΎ я дСлаю Π½Π΅ Ρ‚Π°ΠΊ? Π― Π±Π΅Π³Ρƒ git…


    ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

    БтратСгия Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² DynamoDB

    Какова стратСгия Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² для DynamoDB ? Π’ Π‘Π΅Π»ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΏΠΎ Π”ΠΈΠ½Π°ΠΌΠΎ говорится ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий ΠΊ GetItem, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ вопрос SO Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ,…

    Какой смысл ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ «ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json» npm ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий?

    Какой смысл ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ npm package-lock.json ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий? По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ этого Ρ„Π°ΠΉΠ»Π° с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ исходного ΠΊΠΎΠ΄Π° Π²Ρ‹Π·Π²Π°Π»ΠΎ большС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹, Ρ‡Π΅ΠΌ прирост эффСктивности. НаличиС…

    npm install with —no-package-lock flag-ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json?

    Из npm 5 doc : АргумСнт —no-package-lock Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ npm ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» package-lock.json. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ npm install с —no-package-lock Π·Π° package-lock.json (Ссли ΡƒΠΆΠ΅ сущСствуСт) Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ…

    Как Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сгСнСрирован Ρ„Π°ΠΉΠ» package-lock.json для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Node.js docker?

    Π£Ρ‡Π΅Π±Π½ΠΈΠΊ Node.js docker ( https://nodejs.org/en/docs/guides/nodejs-docker-webapp/ ) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ установка npm Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π° хостС Π΄ΠΎ запуска docker для создания Ρ„Π°ΠΉΠ»Π° package-lock.json….

    Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ package.json, package-lock.json ΠΈ yarn.lock?

    Π― понял Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ссылки, Π½ΠΎ всС ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»-это вопрос ? https://docs.npmjs.com/files/package-lock.json

    Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» package-lock.json Π² Ρ„Π°ΠΉΠ» .gitignore?

    Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСрсии зависимостСй, установлСнных Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄Π° npm install создаСт Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ package-lock.json . Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано с Node.js v8.0.0 ΠΈ npm v5.0.0 , ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·…

    Никакого эффСкта ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ git diff — ‘:(exclude)package-lock.json’

    Π― Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ diff, Π½ΠΎ Π±Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ ΠΈ являСтся сгСнСрированным Ρ„Π°ΠΉΠ»ΠΎΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного для мСня Ρ‚Π°ΠΌ Π½Π΅Ρ‚. Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΎΠ±Π° : git diff —…

    Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ mergetool XCode для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²?

    Π― Π½Π°Ρ…ΠΎΠΆΡƒΡΡŒ Π² сСрСдинС пСрСбазирования, ΠΈ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ merge. Когда я ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ Ρ„Π°ΠΉΠ» Π² XCode, я Π²ΠΈΠΆΡƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² управлСния вСрсиями (<<<<<<< ΠΈ…

    ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±ΠΎΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… package.json, package-lock.json Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ angular

    Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² angular. Когда я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΠ±Ρ€Π°Π·Π΅Ρ† прилоТСния angular, установлСнного с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ angular-cli, я ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ package.json ΠΈ package-lock.json. Π‘Ρ€Π΅Π΄ΠΈ этих Ρ„Π°ΠΉΠ»ΠΎΠ²…

    ΠŸΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° package-lock.json

    Рассмотрим Ρ‚Π°ΠΊΠΎΠΉ сцСнарий: Π― установил Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ jquery ΠΈ bootstrap с npm install . ПослС этого npp создаСт Ρ„Π°ΠΉΠ» package-lock.json , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± установлСнном…

    НуТны Π»ΠΈ ΠΌΠ½Π΅ ΠΎΠ±Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json ΠΈ package.json?

    ПослС обновлСния ΠΌΠΎΠ΅Π³ΠΎ NPM Π΄ΠΎ послСднСй вСрсии (с 3.X Π΄ΠΎ 5.2.0) ΠΈ запуска npm install Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ автоматичСски созданный Ρ„Π°ΠΉΠ» package-lock.json .

    Π― ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ package-lock.json Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй, Π° Π½Π΅ package.json .

    Π˜ΡΡ…ΠΎΠ΄Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, каТСтся, Ρ‡Ρ‚ΠΎ package.json являСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

    НСобходимы Π»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ±Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ NPM?

    БСзопасно Π»ΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ» package-lock.json ?

    Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ-lock.json (doc1 , doc2 ) ΠΎΠ± этом Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ говорится.

    Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ :

    Π•Ρ‰Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ поразмыслив, я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Π±ΠΎΠ»Π΅Π΅ старой вСрсиСй NPM (Π΄ΠΎ 5.x), ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ установит всС зависимости, Π½ΠΎ с ΠΌΠ΅Π½Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ вСрсиями (ΠΏΠ°Ρ‚Ρ‡-вСрсиями)

    npm

    npm-install

    package.json

    package-lock.json

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


    Omri Luzon Β  Β 

    12 июля 2017 в 08:35

    4 ΠΎΡ‚Π²Π΅Ρ‚Π°


    • NPM5, Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json с package.json?

      ПослС обновлСния NPM Π΄ΠΎ вСрсии 5 я нашСл Ρ„Π°ΠΉΠ» package-lock.json с package.json. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ? Π’ Ρ‡Π΅ΠΌ прСимущСства package-lock.json ?

    • Когда ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json?

      Π― знаю, Ρ‡Ρ‚ΠΎ основной смысл наличия Ρ„Π°ΠΉΠ»ΠΎΠ² .lock Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ содСрТат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ package.json ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ установкС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π§Ρ‚ΠΎ Π― Π₯ΠΎΡ‡Ρƒ…



    148

    Π’Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠ°ΠΊ package-lock.json , Ρ‚Π°ΠΊ ΠΈ package.json ? НСт.

    Π’Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ package.json ? Π”Π°.

    ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с package-lock.json ? НСт.

    package.json ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для зависимостСй — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для опрСдСлСния свойств ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, описания, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ author &, сцСнариСв ΠΈ Ρ‚. Π”. package-lock.json ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ зависимостСй с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ вСрсии.

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


    Markus Stefanko Β  Β 

    02 дСкабря 2018 Π² 08:32



    32

    package-lock.json: записываСт Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ установлСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ…. Π‘ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ установки смогут ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй.

    package.json: записываСт ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Если Π²Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ вСрсии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ здСсь.

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


    Narendar Reddy M Β  Β 

    20 июня 2019 в 09:42



    9

    Если ваш вопрос Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² систСму управлСния вСрсиями — ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½. ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

    Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π·Π΄ΡƒΠ²Π°Π΅Ρ‚ запросы Π½Π° вытягиваниС ΠΈ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°), поэтому, Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ измСнился, сдСлайтС для Π½Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚).

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


    Stanley Kirdey Β  Β 

    23 июля 2017 в 05:56


    • ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±ΠΎΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… package.json, package-lock.json Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ angular

      Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² angular. Когда я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΠ±Ρ€Π°Π·Π΅Ρ† прилоТСния angular, установлСнного с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ angular-cli, я ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ package.json ΠΈ package-lock.json. Π‘Ρ€Π΅Π΄ΠΈ этих Ρ„Π°ΠΉΠ»ΠΎΠ² package-lock.json files ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ зависимости, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈ package.json ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ…

    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ package.json & package-lock.json с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git

      Π― знаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json ΠΊ своСму git repo, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ вСрсии зависимостСй. Запуск npm install ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json ΠΈ установит ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΌ вСрсии. Если Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ отсутствуСт, ΠΎΠ½ установит ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· ΠΈΡ……



    2

    Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ хранСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь

    ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


    Vivek Goel Β  Β 

    13 мая 2020 в 14:09


    ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

    ΠœΠΎΠ³Ρƒ Π»ΠΈ я Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ node_modules ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json?

    Π― ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· github, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json (Π½ΠΎ Π½Π΅ package.json). Π—Π°Ρ‚Π΅ΠΌ Π² git bash terminal я ΠΈΠ΄Ρƒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ npm install , Π½ΠΎ я просто ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ…

    Как ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ package.json «latest» dist-tag с вСрсиСй ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json?

    Π― Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ дистрибутива latest Π² ΠΌΠΎΠ΅ΠΌ package.json для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ позволяСт ΠΌΠ½Π΅ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ… послСдниС вСрсии, ΠΊΠΎΠ³Π΄Π° я npm install Π² локальной срСдС, Π±Π΅Π· обновлСния…

    Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ package.json ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json

    Π― скачал Ρ‚Π΅ΠΌΡƒ, ΠΈ Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚-Ρ„Π°ΠΉΠ» lock.json, Π½ΠΎ Π½Π΅Ρ‚ Ρ„Π°ΠΉΠ»Π° package.json. Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ package.json ΠΈΠ· Ρ„Π°ΠΉΠ»Π° package-lock.json? Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡƒΠ·Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»Π°…

    NPM5, Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json с package.json?

    ПослС обновлСния NPM Π΄ΠΎ вСрсии 5 я нашСл Ρ„Π°ΠΉΠ» package-lock.json с package.json. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ? Π’ Ρ‡Π΅ΠΌ прСимущСства package-lock.json ?

    Когда ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json?

    Π― знаю, Ρ‡Ρ‚ΠΎ основной смысл наличия Ρ„Π°ΠΉΠ»ΠΎΠ² .lock Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ содСрТат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ package.json ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ установкС ΠΎΠ΄Π½ΠΎΠ³ΠΎ…

    ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±ΠΎΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… package.json, package-lock.json Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ angular

    Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² angular. Когда я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΠ±Ρ€Π°Π·Π΅Ρ† прилоТСния angular, установлСнного с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ angular-cli, я ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ package.json ΠΈ package-lock.json. Π‘Ρ€Π΅Π΄ΠΈ этих Ρ„Π°ΠΉΠ»ΠΎΠ²…

    Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ package.json & package-lock.json с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git

    Π― знаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json ΠΊ своСму git repo, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ вСрсии зависимостСй. Запуск npm install ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json…

    npm ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» package.json ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json?

    Π£ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ node_modules ΠΈ Ρ„Π°ΠΉΠ» package-lock.json , Π½ΠΎ Π½Π΅Ρ‚ Ρ„Π°ΠΉΠ»Π° package.json . поэтому я запустил npm init , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» package.json , Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ…

    Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ package.json ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json?

    Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отсутствуСт Ρ„Π°ΠΉΠ» package.json. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» Ρ„Π°ΠΉΠ» package-lock.json Π±Π΅Π· Ρ„Π°ΠΉΠ»Π° package.json. Как я ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ чистый package.json ΠΈΠ· Ρ„Π°ΠΉΠ»Π°…

    ОбновлСниС Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии Π² package.json ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅-lock.json Π±Π΅Π· обновлСния зависимостСй

    TL;DR Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ вСрсии package.json ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°-lock.json Π±Π΅Π· обновлСния зависимостСй? Π£ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ наш Π½ΠΎΠΌΠ΅Ρ€ вСрсии послС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ….

    npm — package-lock.json — Description package-lock.json автоматичСски гСнСрируСтся для Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π³Π΄Π΅



    Description

    package-lock.json автоматичСски гСнСрируСтся для Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π³Π΄Π΅ npm измСняСт Π»ΠΈΠ±ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ node_modules , Π»ΠΈΠ±ΠΎ package.json . Он описываСт Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ сгСнСрировано, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ установки ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, нСзависимо ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ зависимостСй.

    Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для фиксации Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ исходных тСкстов ΠΈ слуТит для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ:

    • ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ΅ прСдставлСниС Π΄Π΅Ρ€Π΅Π²Π° зависимостСй Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅,Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ нСпрСрывная интСграция Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ установку Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΡ… ΠΆΠ΅ зависимостСй.

    • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Β«ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ» ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ состояниям node_modules Π±Π΅Π· нСобходимости фиксации самого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

    • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ наглядности ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π΅Ρ€Π΅Π²Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ исходных тСкстов.

    • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ процСсс установки,позволяя npm ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π½Π΅Π΅ установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

    • Начиная с npm v7, Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ содСрТат достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ прСдставлСниС ΠΎ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ чтСния Ρ„Π°ΠΉΠ»ΠΎΠ² package.json ΠΈ позволяя Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

    package-lock.json ΠΏΡ€ΠΎΡ‚ΠΈΠ² npm-shrinkwrap.json

    Оба этих Ρ„Π°ΠΉΠ»Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ схоТиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ package-lock.json Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ нСльзя ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½, Ссли Π½Π°ΠΉΠ΄Π΅Π½ Π² любом мСстС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    Напротив, npm-shrinkwrap.json допускаСт ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ опрСдСляСт Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй с ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π­Ρ‚ΠΎ Π½Π΅ рСкомСндуСтся, ΠΊΡ€ΠΎΠΌΠ΅ случаСв развСртывания инструмСнта CLI ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ использования процСсса ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ для создания производствСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

    Если ΠΈ package-lock.json , ΠΈ npm-shrinkwrap.json ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, npm-shrinkwrap.json Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Π° package-lock.json Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½.

    Hidden Lockfiles

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°ΠΏΠΊΠΈ node_modules , npm начиная с вСрсии 7 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ «скрытый» node_modules/.package-lock.json Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π² node_modules / .package-lock.json . Он содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСсто чтСния всСй ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ node_modules ΠΏΡ€ΠΈ соблюдСнии ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условий:

    • ВсС ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ссылаСтся, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ node_modules .
    • Π’ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ node_modules Π½Π΅Ρ‚ ΠΏΠ°ΠΏΠΎΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.
    • ИзмСнСнноС врСмя Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π½Π΅Π΄Π°Π²Π½Π΅Π΅,ΠΊΠ°ΠΊ ΠΈ Ρƒ всСх ΠΏΠ°ΠΏΠΎΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Π°,Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ссылаСтся.

    Π’ΠΎ Π΅ΡΡ‚ΡŒ,скрытый lockfile Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС,Ссли ΠΎΠ½ Π±Ρ‹Π» создан Π² Ρ€Π°ΠΌΠΊΠ°Ρ… послСднСго обновлСния Π΄Π΅Ρ€Π΅Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².Если Π΄Ρ€ΡƒΠ³ΠΎΠΉ CLI ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ,это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ,ΠΈ скрытый Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½.

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ , Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ , Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ врСмя ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ измСняСтся. НапримСр, Ссли Π²Ρ‹ добавляСтС Ρ„Π°ΠΉΠ» Π² node_modules/foo/lib/bar.js , Ρ‚ΠΎ врСмя измСнСния Π½Π° node_modules/foo Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Если Π²Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² node_modules , ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² node_modules/.package-lock.json .

    ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ скрытый Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ игнорируСтся Π±ΠΎΠ»Π΅Π΅ старыми вСрсиями npm, ΠΎΠ½ Π½Π΅ содСрТит возмоТностСй ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…Β» Ρ„Π°ΠΉΠ»Π°Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ это lockfileVersion: 3 , Π° Π½Π΅ lockfileVersion: 2 .

    Π Π°Π±ΠΎΡ‚Π° со старыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

    Когда npm ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ· npm v6 ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅ Π²ΠΎ врСмя процСсса установки ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΎΠ½ автоматичСски обновляСтся для получСния Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π»ΠΈΠ±ΠΎ ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π° node_modules , Π»ΠΈΠ±ΠΎ (Π² случаС пустых Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² node_modules ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ старых Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ) ΠΈΠ· рССстра npm.

    Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°

    name

    Имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ блокируСтся ΠΏΠ°ΠΊΠ΅Ρ‚. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ находится Π² package.json .

    version

    ВСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ установлСна ​​блокировка ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ находится Π² package.json .

    lockfileVersion

    ЦСлочислСнная вСрсия, начиная с 1 с Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, сСмантика ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ использовалась ΠΏΡ€ΠΈ создании этого package-lock.json .

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ измСнился Π² npm v7, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² node_modules ΠΈΠ»ΠΈ рССстрС npm. Π€Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, созданныС npm v7, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ lockfileVersion: 2 .

    • ВСрсия Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°:»Π΄Ρ€Π΅Π²Π½ΠΈΠΉ» shrinkwrap-Ρ„Π°ΠΉΠ» ΠΈΠ· вСрсии npm,ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ npm v5.
    • 1 : вСрсия Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² npm v5 ΠΈ v6.
    • 2 : вСрсия Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ npm v7, которая ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстима с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ v1.
    • 3 : вСрсия Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ npm v7, Π±Π΅Π· возмоТности ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для скрытого node_modules/.package-lock.json Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² node_modules / .package-lock.json ΠΈ, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии npm, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° npm v6 пСрСстанСт Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ.

    npm всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ,Π΄Π°ΠΆΠ΅ Ссли это Π½Π΅ Ρ‚Π° вСрсия,для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½.

    packages

    Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт мСстополоТСниС ΠΏΠ°ΠΊΠ΅Ρ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ,содСрТащим ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

    ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ указываСтся с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ "" , Π° всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ пСрСчислСны с ΠΈΡ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ путями ΠΎΡ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    ДСскрипторы ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

    • вСрсия: вСрсия, найдСнная Π² package.json

    • resolved:ΠœΠ΅ΡΡ‚ΠΎ,ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Π±Ρ‹Π» фактичСски Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½.Π’ случаС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²,взятых ΠΈΠ· рССстра,это Π±ΡƒΠ΄Π΅Ρ‚ ссылка Π½Π° tarball.Π’ случаС git-зависимостСй это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ git url с commit sha.Π’ случаС зависимостСй ΠΎΡ‚ ссылок это Π±ΡƒΠ΄Π΅Ρ‚ мСстополоТСниС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ссылки.

    • Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ: sha512 стандартной цСлостности субрСсурсов sha512 ΠΈΠ»ΠΈ sha1 для Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°, распакованного Π² этом мСстС.

    • ссылка:Π€Π»Π°Π³,ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ,Ρ‡Ρ‚ΠΎ это символичСская ссылка.Если ΠΎΠ½ присутствуСт,Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ,ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΡŒ ссылки Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

    • dev, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, devOptional: Ссли ΠΏΠ°ΠΊΠ΅Ρ‚ являСтся строго Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄Π΅Ρ€Π΅Π²Π° devDependencies , Ρ‚ΠΎΠ³Π΄Π° dev Π±ΡƒΠ΄Π΅Ρ‚ истинным. Если это строго Ρ‡Π°ΡΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²Π° optionalDependencies , Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ optional . Если это ΠΈ dev Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ optional Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅-Π”Π΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ devOptional Π±ΡƒΠ΄Π΅Ρ‚ установлСно. ( optional Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ зависимости dev Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ dev ,Ρ‚Π°ΠΊ ΠΈ optional .)

    • inBundle:Π€Π»Π°Π³,ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Ρ‚ΠΎ,Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ являСтся Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ,входящСй Π² ΠΏΠ°ΠΊΠ΅Ρ‚.

    • hasInstallScript: Ρ„Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ , Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ preinstall , install ΠΈΠ»ΠΈ postinstall сцСнарий.

    • hasShrinkwrap: Ρ„Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» npm-shrinkwrap.json .

    • bin, лицСнзия, Π΄Π²ΠΈΠΆΠΊΠΈ, зависимости, optionalDependencies: поля ΠΈΠ· package.json

    dependencies

    Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ вСрсий npm, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… lockfileVersion: 1 . Π­Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ зависимостСй. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ структура ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° строго иСрархичСская, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях слоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ зависимости ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ссылок.

    npm v7 ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот Ρ€Π°Π·Π΄Π΅Π», Ссли присутствуСт Ρ€Π°Π·Π΄Π΅Π» packages , Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ npm v6 ΠΈ npm v7.

    ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ зависимостСй ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

    • version:спСцификатор,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² зависимости ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ.

      • связныС зависимости:НСзависимо ΠΎΡ‚ источника,это Π½ΠΎΠΌΠ΅Ρ€ вСрсии,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ носит чисто ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.
      • источники рССстра: это Π½ΠΎΠΌΠ΅Ρ€ вСрсии. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.2.3 )
      • git sources: это спСцификатор git с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½ΠΎΠΉ фиксациСй. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, git+https://example.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e )
      • http tarball sources: это URL-адрСс tarball. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://example.com/example-1.3.0.tgz )
      • Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ источники tarball: это URL Ρ„Π°ΠΉΠ»Π° tarball. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, file:///opt/storage/example-1.3.0.tgz )
      • Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ источники ссылок: это URL-адрСс Ρ„Π°ΠΉΠ»Π° ссылки. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, file:libs/our-module )
    • Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ: sha512 стандартной цСлостности субрСсурсов sha512 ΠΈΠ»ΠΈ sha1 для Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°, распакованного Π² этом мСстС. Для зависимостСй git это фиксация sha.

    • Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½:Для источников рССстра это ΠΏΡƒΡ‚ΡŒ ΠΊ tarball ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ URL рССстра.Если URL tarball Π½Π΅ находится Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ сСрвСрС,Ρ‡Ρ‚ΠΎ ΠΈ URL рССстра,Ρ‚ΠΎ это ΠΏΠΎΠ»Π½Ρ‹ΠΉ URL.

    • bundled:Если true,Ρ‚ΠΎ это Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ установлСна Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ.ΠŸΡ€ΠΈ установкС этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ модуля Π½Π° этапС извлСчСния,Π° Π½Π΅ установлСн ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ.

    • dev:Если true,Ρ‚ΠΎ эта Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ являСтся Π»ΠΈΠ±ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π’ΠžΠ›Π¬ΠšΠž ΠΎΡ‚ модуля Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня,Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ Π½Π΅Π³ΠΎ.Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ false для зависимостСй,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ зависимости Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня,Π½Π΅ связанной с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

    • optional:Если true,Ρ‚ΠΎ эта Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ являСтся Π»ΠΈΠ±ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π’ΠžΠ›Π¬ΠšΠž модуля Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня,Π»ΠΈΠ±ΠΎ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ false для зависимостСй,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня,Ρ‚Π°ΠΊ ΠΈ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π½Π΅ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня.

    • Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚: это ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ модуля Π² Π²Π΅Ρ€ΡΠΈΡŽ. Π­Ρ‚ΠΎ список всСго, Ρ‡Ρ‚ΠΎ трСбуСтся для этого модуля, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ установлСн. ВСрсия Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° сопоставлСния зависимости Π»ΠΈΠ±ΠΎ Π² Π½Π°ΡˆΠΈΡ… dependencies Π»ΠΈΠ±ΠΎ Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹.

    • зависимости:Зависимости этой зависимости,Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅,ΠΊΠ°ΠΊ ΠΈ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

    Π‘ΠΌ.Ρ‚Π°ΠΊΠΆΠ΅

    package-lock.json β€” Русский β€” it-swarm.com.ru

    package-lock.json β€” Русский β€” it-swarm.com.ru

    it-swarm.com.ru

    НуТны Π»ΠΈ ΠΌΠ½Π΅ ΠΊΠ°ΠΊ package-lock.json, Ρ‚Π°ΠΊ ΠΈ package.json?

    Какой смысл ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ npm «package-lock.json» ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий?

    Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ package.json ΠΈΠ· package-lock.json

    Ошибка ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ уязвимости Github для модуля ΡƒΠ·Π»Π° hoek

    Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ уязвимый ΠΏΠ°ΠΊΠ΅Ρ‚ npm Π² ΠΌΠΎΠ΅ΠΌ package-lock.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Π² package.json?

    Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ npm-shrinkwrap.json ΠΈ package-lock.json?

    npm5 эквивалСнтно Ρ„Π»Π°Π³Ρƒ —pure-lockfile для пряТи?

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ «npm install» пСрСписываСт package-lock.json?

    npm install Π½Π΅ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚-lock.json

    Π•ΡΡ‚ΡŒ Π»ΠΈ способ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ npm ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ package-lock.json?

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ package-lock.json ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Ρ…ΡΡˆ цСлостности с sha1 Π½Π° sha512?

    ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ бСзопасности Π² зависимости, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² package-lock.json

    Ошибка: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области (‘angular.json’) Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½

    Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Caret ΠΈ package-lock.json: ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с Π½ΠΈΠΌΠΈ послСдниС вСрсии Π±Π΅Π· Π²Π·Π»ΠΎΠΌΠ°?

    Package-lock.json — Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ зависимости ΠΎΡ‚

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ свойство цСлостности Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° yarn.lock?

    Как npm ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, Π½ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

    Π‘ΡƒΡ„Π΅Ρ€ Π±Π΅Π· ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

    Π‘Π»ΡƒΠΆΠ±Π° распрСдСлСнной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

    Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° подсвСтки синтаксиса Emacs

    Π•ΡΡ‚ΡŒ Π»ΠΈ готовая ΠΊ производству ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Ρ…ΡΡˆ-рСализация Π² C++?

    ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ — для настоящих экспСртов

    ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π°Ρ‚ΠΎΠΌΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

    ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ «ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ врСмя оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ; ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ», Π΄Π°ΠΆΠ΅ Ссли я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ

    ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ экран Π½Π° Android

    Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Gemfile ΠΈ Gemfile.lock Π² Ruby Π½Π° Rails

    ПониманиС Ρ„Π°ΠΉΠ»Π° Gemfile.lock

    Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ iPhone/iPad, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π°?

    НС блокируСмая мноТСствСнная ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ / ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² C ++ 11

    Gemfile.lock содСрТит ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния

    ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду Π² Android 5.1

    Atomic shared_ptr для ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ списка Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

    Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Android-устройство всСгда Π±Ρ‹Π»ΠΎ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅?

    Ѐункция Samsung «ΠžΠΏΡ‚имизация ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ» ΡƒΠ±ΠΈΠ²Π°Π΅Ρ‚ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ прилоТСния Ρ‡Π΅Ρ€Π΅Π· 3 дня

    Π’Π°Ρˆ ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ для rake (12.0.0), Π½ΠΎ эта вСрсия Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π° Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· источников, пСрСчислСнных Π² вашСм Gemfile.

    ИспользованиС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Boost.Lockfree ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ использованиС ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠΎΠ²

    Π“Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ прогрСсса Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

    Как ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Eclipse

    Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚: ошибка [INSTALL_FAILED_CONTAINER_ERROR]?

    НС Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ зависимости ΠΈΠ· Ρ„Π°ΠΉΠ»Π° packages.config ΠΏΡ€ΠΈ создании ΠΏΠ°ΠΊΠ΅Ρ‚Π° NuGet

    ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π·

    [A] System.Web.WebPages.Razor.Configuration.HostSection Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊ … web.config ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

    Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ go get?

    Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ восстановлСниС ΠΏΠ°ΠΊΠ΅Ρ‚Π° NuGet Π² Visual Studio 2013

    NuGet Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚

    Π“Π΄Π΅ sdkman устанавливаСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹?

    НСсанкционированный ΠΏΠ°ΠΊΠ΅Ρ‚ nuget ΠΈΠ· Visual Studio Team Services с использованиСм ядра asp.) Π² package.json?

    npm устанавливаСт частныС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ github ΠΏΠΎ зависимости Π² package.json

    Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ настройки запуска WebStorm ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° «scripts» package.json

    Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ частноС Github Ρ€Π΅ΠΏΠΎ Π² качСствС зависимости ΠΎΡ‚ npm

    Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для скриптов npm

    ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² package.json

    Π—Π°ΡΡ‚Π°Π²ΡŒΡ‚Π΅ `npm install —save` Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π² package.json

    NPM: ΠΊΠ°ΠΊ просто Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚ΠΈΠ½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡŽ?

    Ошибка запуска скрипта ΠΏΡ€ΠΈ запускС npm start

    Ρ‡Ρ‚ΠΎ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΌΠΎΠ΅Π³ΠΎ package.json, Ссли ΠΌΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ?

    ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Node.js Π±Π΅Π· package.json

    «Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²» Π² Nodejs5 ΠΈ babel?

    Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ установлСнный Π³Π»ΠΎΡ‚ΠΎΠΊ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС?

    Как ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ прилоТСния Π² Angular?

    Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ package.json для запуска сцСнария eslint

    Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ скрипт Π² Ρ„Π°ΠΉΠ» package.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт Ρ„Π°ΠΉΠ» javascript?

    НС удаСтся Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ «ΠΏΡƒΡ‚ΡŒ» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

    Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «devDependencies», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ npm

    NPM, package.json — ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ с «@» Π² ΠΈΠΌΠ΅Π½ΠΈ

    Как ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ `package.json` ΠΊ npm?

    Ошибка зависимости ΠΎΡ‚ ΡƒΠ·Π»Π°

    Π‘Π±ΠΎΡ€ΠΊΠ° .exe Ρ„Π°ΠΉΠ»Π° Π² .NET Core RC2

    Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сцСнарии package.json для копирования Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ

    npm package.json основная ΠΈ структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

    npm update Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚

    Как Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ свойства ‘files’ ΠΈ ‘directoryies’ Π² package.json?

    ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ установка пряТи вмСсто npm для модуля Node?

    Как ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ `yarn.lock` с` package.json`?

    Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»Π΅ «module» package.json?

    ПолС ‘browser’ Π½Π΅ содСрТит допустимой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ псСвдонима

    НС удаСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ NuGet, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся Newtonsoft.Json.10.0.1, Π² Visual Studio 2015

    Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ bitbucket Π² package.json с вСрсиСй

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ (ΠΈ ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ FIx) ESLint import / no-extranous-dependencies Π‘Π±ΠΎΠΈ Π² установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…?

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Node ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΏΠ°ΠΏΠΊΡƒ .staging?

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ тСстовая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€ΠΈ создании package.json?

    Как ΠΌΠ½Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ @ types / * Π² «зависимости» ΠΈΠ»ΠΈ Β«devDependenciesΒ»?

    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹ΠΉ рССстр Π² package.json

    Ошибка: EPERM: опСрация Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π°, отсоСдинитС ‘D: \ Sources \ ** \ node_modules \ fsevents \ node_modules \ abbrev \ package.json’

    Β«Uncaught TypeError: React.createClass Π½Π΅ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉΒ» Π² Ρ„Π°ΠΉΠ»Π΅ Render.js (элСктронноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅)

    ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· devDependencies Π² зависимости Π² npm package.json

    Как я ΠΌΠΎΠ³Ρƒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько скриптов npm ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ?

    Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Angular 5 + Nodejs Express App для Heroku

    Как я ΠΌΠΎΠ³Ρƒ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² скриптС npm?

    Angular5: polyfills.ts & \ main.ts отсутствуСт Π² компиляции TypeScript

    Π§Ρ‚ΠΎ Webpack 4 ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами: false

    НС удаСтся Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Β«@ angular-devkit / build-angularΒ»

    ЗапуститС ng build —prod с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ настройками срСды

    Content dated before 2011-04-08 (UTC) is licensed under CC BY-SA 2.5. Content dated from 2011-04-08 up to but not including 2018-05-02 (UTC) is licensed under CC BY-SA 3.0. Content dated on or after 2018-05-02 (UTC) is licensed under CC BY-SA 4.0. | Privacy

    Π€Π°ΠΉΠ» package-lock.json

    Π’ вСрсии 5 npm прСдставил Ρ„Π°ΠΉΠ» package-lock.json .

    Π§Ρ‚ΠΎ это? Π’Ρ‹, вСроятно, Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Ρ„Π°ΠΉΠ»Π΅ package.json , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ встрСчаСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡Π°Ρ‰Π΅ ΠΈ сущСствуСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ дольшС.

    ЦСль Ρ„Π°ΠΉΠ»Π° package-lock.json — ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ установлСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π±Ρ‹Π» Π½Π° 100% воспроизводимым Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌΠΈ.1.13.0 , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠ°Ρ‚Ρ‡ ΠΈ второстСпСнныС выпуски: 1.13.1 , 1.14.0 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ 2.0.0 .

  • , Ссли Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ 0.13.0 , это точная вСрсия, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, всСгда
  • Π’Ρ‹ Π½Π΅ фиксируСтС Git свою ΠΏΠ°ΠΏΠΊΡƒ node_modules, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Π°, ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ npm install , Ссли Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ синтаксис ~ ΠΈ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ установлСн. ΠΈ второстСпСнныС выпуски.

    Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 0.13.0 Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ вас.

    Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ свСта, запустив npm install .

    Π˜Ρ‚Π°ΠΊ, ваш исходный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ вновь ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π·Π½Ρ‹Π΅. Π”Π°ΠΆΠ΅ Ссли ΠΏΠ°Ρ‚Ρ‡ ΠΈΠ»ΠΈ второстСпСнный выпуск Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π½ΠΎΡΠΈΡ‚ΡŒ критичСскиС измСнСния, ΠΌΡ‹ всС Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ошибки ΠΌΠΎΠ³ΡƒΡ‚ (ΠΈ поэтому Π±ΡƒΠ΄ΡƒΡ‚) Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ.

    package-lock.json устанавливаСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² stone , Π° npm Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии ΠΏΡ€ΠΈ запускС npm install .

    Π­Ρ‚Π° концСпция Π½Π΅ Π½ΠΎΠ²Π°, ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Composer Π² PHP) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ систСму Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚.

    Π€Π°ΠΉΠ» package-lock.json Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ зафиксирован Π² вашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ являСтся общСдоступным ΠΈΠ»ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ соавторы, ΠΈΠ»ΠΈ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Git Π² качСствС источника для Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ. 5.1.0.0 «

    }

    },

    » get-stdin «: {

    » version «:» 5.0.1 «,

    » resolved «:» https:

    1.tgz «,

    «Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ»: «sha1-Ei4WFZHiH / TFJTAwVpPyDmOTo5g =»

    },

    «is-fullwidth-code-point»: {

    «Π²Π΅Ρ€ΡΠΈΡ»: «2.0.0»,

    «Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ»: «https:

    is-fullwidth-code-point-2.0.0.tgz «,

    » Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ «:» sha1-o7MKXE8ZkYMWeqq5O + 764937ZU8 = «

    },

    » minimist «: {

    » вСрсия «:» 0 .0.10 «,

    » Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ «:» https:

    .tgz «,

    » Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ «:» sha1-3j + YVD2 / lggr5IrRoMfNqDYwHc8 = «

    },

    » optimist «: {

    » вСрсия «

    : «0.6.1»,

    «Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ»: «https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz»,

    «Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ»: «sha1-2j6nRob6IaGaERwybpDrFaAZZoY =»,

    «Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚»: {

    «ΠΌΠΈΠ½ΠΈΠΌΠΈΡΡ‚»: «~ 0.0.1»,

    «ΠΏΠ΅Ρ€Π΅Π½ΠΎΡ слов»: «~ 0.0.2»

    }

    },

    «ΡˆΠΈΡ€ΠΈΠ½Π° строки»: {

    «Π²Π΅Ρ€ΡΠΈΡ»: «2.3.0.0 «

    }

    },

    » strip-eof «: {

    » вСрсия «:» 1.0.0 «,

    » Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ «:» https://registry.npmjs.org/strip -eof / — / strip-eof-1.0.0.tgz «,

    » Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ «:» sha1-u0P / VZim6wXYm1n80SnJgzE2Br8 = «

    },

    » wordwrap «: {

    » вСрсия «:» 0.0. 3 «,

    » Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ «:» https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz «,

    » Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ «:» sha1-o9XabNXAvAAI03I0u68b7WMFkQc = «

    }

    }

    }

    }

    ΠœΡ‹ установили cowsay , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚

    • get-stdin
    • optimist
    • ΡˆΠΈΡ€ΠΈΠ½Π° струны
    • strip-eof

    Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· , трСбуСтся свойство , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΡΡ‚ΡŒ Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…:

    • ansi-regex
    • is-fullwidth-code-point
    • minimist
    • wordwrap
    • strip-eof

    Они Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ» Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ вСрсии , ΠΏΠΎΠ»Π΅ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ , ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° располоТСниС ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈ строку цСлостности , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

    node.js - я Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽ Ρ„Π°ΠΉΠ» package-lock.json, созданный npm 5?

    Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ npm для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… / ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… css / js ΠΈ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ javascript, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π° страницах, обслуТиваСмых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ django. Π’ ΠΌΠΎΠΈΡ… прилоТСниях Javascript запускаСтся Π½Π° страницС для создания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° выполняСт Π²Ρ‹Π·ΠΎΠ²Ρ‹ ajax, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… VUE ΠΈ / ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с CSS. Если package-lock.json ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСимущСствСнный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ содСрТимым package.json, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½Π° вСрсия этого Ρ„Π°ΠΉΠ»Π°.По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, это Π»ΠΈΠ±ΠΎ Π½Π΅ влияСт Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ установлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm install, Π»ΠΈΠ±ΠΎ, Ссли Π΄Π°, Ρ‚ΠΎ Π½Π° сСгодняшний дСнь Π½Π΅ повлияло ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°ΡŽ, насколько ΠΌΠ½Π΅ извСстно. Π― Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ mongodb ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ½ΠΊΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ.

    Π― ΡƒΠ΄Π°Π»ΡΡŽ package-lock.json ΠΈΠ· Ρ€Π΅ΠΏΠΎ
    ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ npm install создаСт этот Ρ„Π°ΠΉΠ», Π° npm install являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ процСсса развСртывания Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий ΡƒΠ·Π»Π° ΠΈ npm выполняСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС, Π½ΠΎ я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ.

    Когда Π½Π° сСрвСрС запускаСтся npm install , ΠΎΠ½ измСняСт package-lock.json,
    ΠΈ Ссли Π΅ΡΡ‚ΡŒ измСнСния Π² Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ записан Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ Π½Π° сСрвСрС, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ WONT ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ измСнСния ΠΈΠ· источника. Π’ΠΎ Π΅ΡΡ‚ΡŒ
    Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ запрос ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ измСнСния, внСсСнныС Π² package-lock.json.

    Π’Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ локально сгСнСрированный package-lock.json Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ находится Π² Ρ€Π΅ΠΏΠΎ (ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ мастСр ТСсткого происхоТдСния), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ npm Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ссли package-lock.json Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится Π² node_modules ΠΈΠ·-Π·Π° установки npm, Ρ‡Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² node_modules Π±Ρ‹Π»ΠΈ установлСны Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии, это снова Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ Ρƒ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

    Если node_modules Π½Π΅Ρ‚ Π² вашСм Ρ€Π΅ΠΏΠΎ (Π° это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ), Ρ‚ΠΎ package-lock.json слСдуСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

    Если ΠΌΠ½Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, ΠΏΠΎΠΏΡ€Π°Π²ΡŒΡ‚Π΅ мСня Π² коммСнтариях, Π½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями взято ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π°, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла. Π€Π°ΠΉΠ» package.json содСрТит Π½ΠΎΠΌΠ΅Ρ€Π° вСрсий, ΠΈ я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ этот Ρ„Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сборки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π° происходит установка npm, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° я Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΡΡŽ, npm install ТалуСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

      ДТСйсон @ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ: introcart_wagtail $ rm package.json
    jason @ localhost: introcart_wagtail $ npm ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ
    npm WARN saveError ENOENT: Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'
      

    , ΠΈ сборка Π½Π΅ выполняСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ установкС node_modules ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ npm для сборки js / css Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΠΉ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли я снимаю Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.json

      ДТСйсон @ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ: introcart_wagtail $ rm package-lock.json
    ДТСйсон @ localhost: introcart_wagtail $ npm Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ dev
    
    > [email protected] dev / home / jason / webapps / introcart_devtools / introcart_wagtail
    > NODE_ENV = Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ --progress --colors --watch --mode = Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
    
     10% Π·Π΄Π°Π½ΠΈΠ΅ 0/1 ΠΌΠΎΠ΄ΡƒΠ»ΠΈ 1 Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ ...
      

    Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ `npm update` ΠΈ` remove package-lock.json` плюс `npm install`?

    Π’ package-lock.json Π² основном косвСнныС зависимости Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.ΠšΠΎΡΠ²Π΅Π½Π½Ρ‹Π΅ зависимости ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‚Π΅ зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² package.json вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ зависимостями Π²Π°ΡˆΠΈΡ… зависимостСй.

    Когда вызываСтся npm update --dev , Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависимости ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ package.json . ПослС обновлСния записСй вызываСтся установка, эта установка обновляСт Π² package-lock.json Ρ‚Π΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈ стороны, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π² package.json .Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ прямыС, Ρ‚Π°ΠΊ ΠΈ косвСнныС зависимости ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ package-lock.json . Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² package.json .
    Π’Ρ€Π΅Ρ‚ΡŒΠΈ стороны, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ Π² package.json , Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ Π² package-lock.json . (Π˜Ρ… прямая ΠΈ косвСнная зависимости ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.)

    ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ rm package-lock.json ΠΈ npm install информация ΠΎ косвСнных зависимостях тСряСтся ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° .json . ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ npm install создаСтся Π½ΠΎΠ²Ρ‹ΠΉ package-lock.json , ΠΈ косвСнныС зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ для всСх Π²Π°ΡˆΠΈΡ… зависимостСй.

    Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

    Π’ package-lock.json Ρƒ нас Π΅ΡΡ‚ΡŒ косвСнная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ tslib: 1.9.0 .

      "Ρ†Π»ΠΈΠ±": {
      "вСрсия": "1.9.0",
      "Ρ€Π΅ΡˆΠ΅Π½ΠΎ": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
      "Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ": "sha512-f / qGG2tUkrISBlQZEjEqoZ3B2 + npJjIf04h2wuAv9iA8i04Icp + 61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ =="
    },
      

    tslib - это Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Angular, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ нСпосрСдствСнно Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ .4.9.3 ",
    "транспортир": "~ 5.4.0",
    "ts-node": "~ 5.0.1",
    "Ρ†Π»ΠΈΠ½Ρ‚": "~ 5.9.1"
    }

    Если ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ npm update --dev , Π±ΡƒΠ΄ΡƒΡ‚ внСсСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния:

      + [email protected]
    + [email protected]
    + [email protected]
    + [email protected]
    + [email protected]
    + [email protected]
    + [email protected]
    + @ Ρ‚ΠΈΠΏΡ‹ / Тасмин @ 3.3.16
    + @ Ρ‚ΠΈΠΏΡ‹ / jasminewd2 @ 2.0.8
    + [email protected]
    + [email protected]
      

    ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ .json Π£Π³Π»ΠΎΠ²Ρ‹Π΅ зависимости Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Π΅ΠΌ. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ tslib Ρ‚Π°ΠΊΠΆΠ΅ остался Π² вСрсии 1.9.0 Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ package-lock.json .

    Однако, Ссли ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ package-lock.json , ΡƒΠ΄Π°Π»ΠΈΠΌ node_modules , сдСлаСм Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ обновлСния Π² package.json Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ npm install , ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ вновь сгСнСрированный ΠΏΠ°ΠΊΠ΅Ρ‚ package-lock. json , Ρ‡Ρ‚ΠΎ tslib Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ 1.12,0 . (Если ΠΌΡ‹ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ node_modules , Ρ‚Π° ΠΆΠ΅ вСрсия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ снова ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² package-lock.json , ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅.)

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    Π˜Ρ‚Π°ΠΊ, Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² случаС npm update --dev ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ прямыС ΠΈ косвСнныС зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ связаны с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π² package.json . Но Π² случаС rm package-lock.json ΠΈ npm install всС косвСнныС зависимости ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

    УстранСниС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π² package-lock.json | Π‘Π»ΠΎΠ³ TkDodo


    Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΠ» ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² git, сколько сСйчас.

    Π­Ρ‚ΠΎ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ΠΎ ошибкам. Π­Ρ‚ΠΎ просто Π½Π΅ вСсСло.

    Одна Π²Π΅Ρ‰ΡŒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠΈΡ‚ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎ, Ссли сдСлана Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, - это Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π² сгСнСрированных Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ package-lock.json.
    ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это происходит, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. вСрсия
    ,
    Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «совмСстимая с вСрсиСй, согласно сСмвСру».4.2.1 ΠΊΠ°ΠΊ вСрсия,
    ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΎΡ‚ 4.2.1 Π΄ΠΎ 4.17.20 (послСдняя вСрсия)

    Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ ΠΈ вступаСт Π² ΠΈΠ³Ρ€Ρƒ package-lock.json. ПослС установки ΠΎΠ½ «Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚» вас Π½Π° Ρ‚ΠΎΠΉ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ установили.
    Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли 4.2.1 являСтся послСднСй вСрсиСй Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ вашСй установки, , эта вСрсия Π±ΡƒΠ΄Π΅Ρ‚ записана Π² package-lock ΠΈ с этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ.
    Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ΠΉΠ΄ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ вСрсии, тСорСтичСски совмСстимыС с Π½ΠΈΠΌ.

    Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ вСрсия Π½Π° своСй машинС, ΠΈ это ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²Π°ΠΆΠ½ΠΎ для CI / CD.
    Π― Π±Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² производство Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ , Ρ‡Π΅ΠΌ ΠΌΡ‹ тСстировали, Π΄Π°ΠΆΠ΅ Ссли это всСго лишь ΠΏΠ°Ρ‚Ρ‡.

    Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ удаляСтС package-lock.json, вся эта ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ исчСзаСт.
    ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ node_module, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ зависитС, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ послСднСй вСрсии, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ тСорСтичСски совмСстим.
    Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π±Π΅Π· ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠ΅Π»ΠΎΡ‡Π΅ΠΉ ΠΈ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ.Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

    1. Он ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС строго ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ сСмантичСского управлСния вСрсиями, ΠΈ я искрСннС сомнСваюсь, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅Ρ‚ возмоТности Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого.
    2. Основная нулСвая вСрсия освобоТдСна ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ» сСмантичСского управлСния вСрсиями. Из спСцификации semver:

      Основная нулСвая вСрсия (0.y.z) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ВсС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² любоС врСмя. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ API НЕ Π‘Π›Π•Π”Π£Π•Π’ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ.

    ВзглянитС Π½Π° свой ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ Π·Π°ΠΌΠΎΠΊ.), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ — Π½Π΅Ρ‚.

    Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ package-lock.json сСйчас ΠΈΠ· любого ΠΈΠ· своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ снова запуститС npm install , ΠΎΠ½ навСрняка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Π°Ρ‡Π΅.

    Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² порядкС? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅Ρ‚. Никто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ.
    Для мСня это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: «рСгрСссионная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° всСго», Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° просто Ρ€Π΅ΡˆΠ°ΡŽ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚.

    Π§Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ вмСсто этого

    Мой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±Ρ‹Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

    • Π Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.json
    • Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ package-lock.json ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ
    • снова запуститС npm install

    Π­Ρ‚ΠΎ просто пСрСустановит всС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ внСсли Π² Π½Π°ΡˆΡƒ Π²Π΅Ρ‚ΠΊΡƒ.
    Однако Π½Π΅Π΄Π°Π²Π½ΠΎ я ΡƒΠ·Π½Π°Π» ΠΎ Π±ΠΎΠ»Π΅Π΅ простом способС:

    npm ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² package-lock.json ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈΡ… Π·Π° нас.
    Из Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ npm:

    Иногда Π΄Π²Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ установки npm ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния Π² систСмах управлСния вСрсиями. По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° npm @ 5.7.0, эти ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ исправив всС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ package.json, Π° Π·Π°Ρ‚Π΅ΠΌ снова запустив npm install [—package-lock-only]. npm автоматичСски Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π·Π° вас ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя всС зависимости ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ Π² Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π΅. Если ΡƒΠΊΠ°Π·Π°Π½ —package-lock-only, ΠΎΠ½ сдСлаСт это Π±Π΅Π· измСнСния вашСго локального node_modules /.

    Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.
    ВсС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ посылку.json, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ npm сдСлаСт Π·Π° нас πŸŽ‰.

    Π₯ΠΎΡ‚Π΅Π» Π±Ρ‹ я Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом Ρ€Π°Π½ΡŒΡˆΠ΅ — это ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΎ Π±Ρ‹ мСня ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.


    БогласСн? НС согласны? Π”Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ Π² коммСнтариях Π½ΠΈΠΆΠ΅ ⬇️

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ package-lock.json?

    Π’ этом руководствС ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ package.json ΠΈ package-lock.json , ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ package-lock.json ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ установки ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями.
    Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ .json , ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ — ΠžΡΠ½ΠΎΠ²Ρ‹ Package.json.

    Как package-lock.json управляСт Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ зависимостСй

    package-lock.json — это Ρ„Π°ΠΉΠ», созданный npm (начиная с вСрсии 5 2017), ΠΈ ΠΎΠ½ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ зависимости ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΈΡ… ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ зависимости.
    Он отслСТиваСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зависимости Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΈ связанныС с Π½ΠΈΠΌΠΈ вСрсии. Π—Π²ΡƒΡ‡ΠΈΡ‚ просто, ΠΏΡ€Π°Π²Π΄Π°? Π₯отя каТдая ΠΈΠ· этих зависимостСй Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои собствСнныС зависимости, ΠΈ каТдая ΠΈΠ· Π½ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои собствСнныС зависимости ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.Π­Ρ‚Π° взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ всСми зависимостями ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌΠΈ зависимостями Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ называСтся Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ зависимостСй .
    Π”Π΅Ρ€Π΅Π²ΠΎ зависимостСй прСдставляСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ зависит наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

    πŸ’°
    НачнитС своС ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ΅ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ с
    100 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² БША Π² Π²ΠΈΠ΄Π΅ бСсплатных ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ²

    с участиСм
    DigitalOcean.

    Установка зависимости с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm фактичСски ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости ΠΈ устанавливаСт ΠΈΡ… Π² ΠΏΠ°ΠΏΠΊΡƒ node_modules / .
    Π€Π°ΠΉΠ» package-lock.json — это снимок всСго нашСго Π΄Π΅Ρ€Π΅Π²Π° зависимостСй ΠΈ вся информация, нСобходимая npm для воссоздания состояния ΠΏΠ°ΠΏΠΊΠΈ node_modules / .ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли присутствуСт Ρ„Π°ΠΉΠ» package-lock.json , npm install установит Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ вСрсии.

    package-lock.json Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для чтСния Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для рСдактирования Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
    Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки npm Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ управляСт ΠΈΠΌ автоматичСски.

    Π’Ρ€Π΅ΠΊ package-lock.json

    Π€Π°ΠΉΠ» package-lock.json Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² систСму управлСния вСрсиями (GIT), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй.ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ фиксации Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° для управлСния вСрсиями Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² отслСТивании состояния ΠΏΠ°ΠΏΠΊΠΈ node_modules /
    Π±Π΅Π· нСобходимости ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ саму ΠΏΠ°ΠΏΠΊΡƒ Π² систСму контроля вСрсий. Никогда Π½Π΅ фиксируйтС ΠΏΠ°ΠΏΠΊΡƒ ΡƒΠ·Π»ΠΎΠ²-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.
    Он Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для фиксации, ΠΎΠ½ слишком большой, ΠΈ Π΅Π³ΠΎ состояниС ΡƒΠΆΠ΅ отслСТиваСтся.

    ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ запускаСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm, которая измСняСт зависимости, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ npm install ΠΈΠ»ΠΈ npm uninstall ΠΈΠ»ΠΈ npm update ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ зависимости,
    ΠΏΠ°ΠΊΠ΅Ρ‚-Π·Π°ΠΌΠΎΠΊ .json Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ состояниС Π΄Π΅Ρ€Π΅Π²Π° зависимостСй.

    тСрмоусадочная ΠΏΠ»Π΅Π½ΠΊΠ°, Π½ΠΏΠΌ

    Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° зависимостСй — Π½Π΅ новая концСпция Π² экосистСмС Node.js ΠΈΠ»ΠΈ Π² ΠΌΠΈΡ€Π΅ программирования. Π€Π°ΠΉΠ» package-lock Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ npm-shrinkwrap.json , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ npm v5.
    ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ package-lock.json игнорируСтся npm ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² рССстрС NPM. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои зависимости, ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ npm-shrinkwrap.json .
    Π£ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Если ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±Π° npm-shrinkwrap ΠΈΠΌΠ΅Π΅Ρ‚ прСимущСство.
    Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования npm-shrinkwrap.json — это прилоТСния, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² процСссС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² рССстрС NPM.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» npm-shrinkwrap, запуститС npm shrinkwrap . Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ваш package-lock Π² npm-shrinkwrap . Π€Π°ΠΉΠ»Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅.
    npm-shrinkwrap слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² рССстр NPM.

    TL; DR

    • package-lock.json — это снимок всСго Π΄Π΅Ρ€Π΅Π²Π° зависимостСй (всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, всС зависимости. ВсС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсий)
    • Π­Ρ‚ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π΄Ρ€Π΅ΠΉΡ„Π° зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ установками.
    • package-lock.json обновляСтся автоматичСски ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ зависимостСй.
    • Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ привязан ΠΊ систСмС контроля вСрсий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ зависимости ΠΏΡ€ΠΈ установкС.

    Бпасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΈ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ вопросов , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ comment ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΌΠ½Π΅ сообщСниС @mariokandut .

    Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Node , ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этими руководствами ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ.

    Бсылки (ΠΈ большоС спасибо):

    NPM package-lock, NPM shrinkwrap, Node, HeyNode

    Π˜ΠΌΠΏΠΎΡ€Ρ‚ пряТи Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ package-lock.json

    ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ 4 июня 2018 Π³. Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ

    Арам Π”Ρ€Π΅Π²Π΅ΠΊΠ΅Π½ΠΈΠ½

    НСкотороС врСмя экосистСма JavaScript являСтся хостом для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ зависимостСй, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ yarn yarn.lock ΠΈ npm’s package-lock.json .

    ΠœΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π΄Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ начиная с вСрсии 1.7.0 yarn ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° npm package-lock.json ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, Π±Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… инструмСнтов ΠΈΠ»ΠΈ Π½Π΅ΡƒΠΊΠ»ΡŽΠΆΠΈΡ… процСссов.

    Π­Ρ‚ΠΎ, Π±Π΅Π· сомнСния, станСт ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒΡŽ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Ρ… срСдах npm / yarn ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ yarn Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

    ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ yarn import Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Π° .json , ΠΈ yarn Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° package-lock.json , ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ создан ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» yarn.lock .

    Π­Ρ‚Π° функция — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠ»ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎΡΡ сотрудничСства ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌΠΈ Π΄Π²ΡƒΡ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠœΡ‹ Ρ‚Π²Π΅Ρ€Π΄ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти Π΄Π²Π° инструмСнта Π·Π½Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Если Π²Ρ‹ заинтСрСсованы ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π° GitHub.

    Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ

    РаньшС yarn import полагался Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅Ρ‚Π° node_modules для опрСдСлСния фиксированных вСрсий, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» yarn.lock Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ свои Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ semver. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ возвращаСтся ΠΊ этому повСдСнию, Ссли Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ» package-lock.json .

    Когда это происходит, yarn создаСт Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ npm-logic-tree ΠΈΠ· package.json ΠΈ package-lock.json Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ фиксированныС вСрсии Π² этом Π΄Π΅Ρ€Π΅Π²Π΅ для создания собствСнного Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ yarn.lock .
    Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ yarn. 1.1.0.0
    вСрсия "1.0.5"

    Π—Π΄Π΅ΡΡŒ b Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ c ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ свою Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с 1.0.1 Π½Π° 1.0.5 , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ yarn.lock Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ это Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Yarn Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈ стрСмится ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ для всСх совмСстимых Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² вСрсий. Π₯отя Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ‚Π°ΠΊΠΈΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ большого эффСкта, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. Π’Ρ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ вСрсий Π² yarn.

    ΠŸΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

    Π’ настоящСС врСмя ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдупрСТдСния для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ для установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ yarn , Ρ‚Π°ΠΊ ΠΈ npm Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ΠŸΡ€ΠΈ нСобходимости ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ совмСстимости ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ свои силы Π² ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ — ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΈΠ»ΠΈ, Π»ΡƒΡ‡ΡˆΠ΅, ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ² PR.

    ΠœΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° .json , Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пряТу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ .

    package-lock.json — Π² GIT ΠΈΠ»ΠΈ Π½Π΅Ρ‚?

    tl; dr

    1. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Π² Π“Π˜Π’
    2. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ
    3. Никогда Π½Π΅ удаляйтС

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° вСрсий ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π°?

    Π’Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ своС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, фиксируСтС Π΅Π³ΠΎ, распространяСтС, тСстируСтС ΠΈ, Ссли всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² производствСнной срСдС.

    Но ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ тСстировали локально, — это Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° CI, ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ развСртываСтся Π² производствСнной срСдС?

    Π’Π°Ρˆ ΠΊΠΎΠ΄ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ GIT (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ элСмСнта управлСния вСрсиями). Если Π²Ρ‹ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄.

    Но вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ состоит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· вашСго собствСнного ΠΊΠΎΠ΄Π°. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ внСшниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Одним ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ являСтся фиксация ΠΏΠ°ΠΏΠΊΠΈ node_modules Π² GIT, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ вСсь ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.Π­Ρ‚ΠΎ само ΠΏΠΎ сСбС создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ каТдая установка npm Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тысячи ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ сдСлаСт Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ обслуТиваниС вашСго рСпозитория.

    НО Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ вСсь ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… вСрсии. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ· рСпозитория NPM, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄.

    Π˜Ρ‚Π°ΠΊ, Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ вСрсии всСх Π½Π°ΡˆΠΈΡ… зависимостСй, ΠΈ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ запускаСт npm install , ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Ρ€ΡΠΈΡŽ вашСго прилоТСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ внСшниС зависимости.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ просто Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии Π² package.json?

    Π’Π°Ρˆ package.json ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° вСрсии Π²Π°ΡˆΠΈΡ… прямых зависимостСй. Если Ρƒ Π½ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ зависимости (Π° ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ), эти вСрсии Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ package-lock.json?

    ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом, Ссли Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ пСрСустановитС, Π²Ρ‹ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ установитС послСдниС вСрсии всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Π΄Π΅Ρ€Π΅Π²Π΅ зависимостСй. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ мСняСтС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ) всСго прилоТСния.

    Π§Ρ‚ΠΎ Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° какая-Ρ‚ΠΎ странная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, связанная с npm, просто ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ node_modules ΠΈ снова запуститС npm install . Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ package-lock.json Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ являСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

    Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ package-lock.json?

    Если Π²Ρ‹ Π΅Π³ΠΎ Π½Π΅ зафиксируСтС, Ρ‚ΠΎ вСрсия прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ запускаСтС локально. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ вас всС ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° CI / production / Π΄Ρ€ΡƒΠ³ΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…

    НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ.И Ссли Π²Ρ‹ всС Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² объяснСнии, просто слСпо слСдуйтС 3 ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° tl; dr. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ

    .

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *