Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
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 5 | by Andrey Melikhov | devSchacht
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ JiΕΓ PospΓΕ‘il: Understanding lock files in NPM 5. ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ°.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΌΠ°ΠΆΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ NPM ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΡΡΠ΄ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ
ΠΎΡΠ»ΠΈΡΠ½ΡΡ
Π²Π΅ΡΠ΅ΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΌΡΠΌ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΠΌ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ lock-ΡΠ°ΠΉΠ». Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ lock-ΡΠ°ΠΉΠ»ΠΎΠ²: Β«ΡΡΠ°ΡΡΠΉΒ» npm-shrinkwrap.json
ΠΈ Π½ΠΎΠ²ΡΠΉ package-lock.json
. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΡΡΡΡ Π½ΠΈΠΆΠ΅, Π° ΠΏΠΎΠΊΠ° Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π²Π²ΠΎΠ΄Π½Π°Ρ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΡΡ
. Π€Π°ΠΉΠ» package.json
ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ semver. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. Lock-ΡΠ°ΠΉΠ» β ΡΡΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ½ΠΈΠΌΠΎΠΊ Π²ΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΈΡ
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, lock-ΡΠ°ΠΉΠ» ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΠΎΠ»Π΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ (integrity), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ Subresource Integrity (SRI) Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ Π±ΡΠ» ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠ½ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ SHA-1 Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ NPM ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΈ SHA-512 Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ.
Π ΡΠ°ΠΉΠ»Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ ΠΏΠΎΠ»Ρ from
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠΉ version
, ΠΊΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π±ΡΠ»ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π±ΠΎΠ»ΠΈ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠ΄-ΡΠ΅Π²ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°Ρ
Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ΅.
Lock-ΡΠ°ΠΉΠ» ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π΅ΡΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΏΠΎΠ»Π΅ lockfileVersion
, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1
. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΈ Π±ΡΠ΄ΡΡΠΈΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΡ
ΡΠΎΡΠΌΠ°ΡΠ° Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠ³Π°Π΄ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ lock-ΡΠ°ΠΉΠ». ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²Π΅ΡΡΠΈΡ 0
.
{
"name": "package-name",
"version": "1.0.0",
"lockfileVersion": 1,
"dependencies": {
"cacache": {
"version": "9.2.6",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-9.2.6.tgz",
"integrity": "sha512-YK0Z5Np5t755edPL6gfdCeGxtU0rcW/DBhYhYVDckT+7AFkCCtedf2zru5NRbBLFk6e7Agi/RaqTOAfiaipUfg=="
},
"duplexify": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz",
"integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=",
"dependencies": {
"end-of-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz",
"integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4="
},
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΏΠΎΠ»Π΅ resolved
Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ URI. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ NPM ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ (Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² .npmrc
), ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅Π΅ΡΡΡΠ°, ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ. ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠΎΠ»Π΅ΠΌ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ, ΠΏΠΎΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΡΠΊΡΠ΄Π° ΠΎΠ½ ΠΏΡΠΈΡΠ΅Π».
ΠΡΠ΅ ΠΎΠ΄Π½Π° Π²Π΅ΡΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ: lock-ΡΠ°ΠΉΠ» ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ node_modules
. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ NPM, ΠΎΠ½ΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΡΠΈΠΌ NPM 5 ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ
ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Yarn. Yarn ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Π² ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΠ²ΠΎΡ ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ
ΠΌΠ΅ΠΆΠ΄Ρ Yarn ΠΈ NPM 5, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ
ΠΎΠ΄ΠΈΡ Π΄ΠΎ lock-ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΎ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠ·ΠΌ Yarn.
Π― ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π», ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ lock-ΡΠ°ΠΉΠ»Π°. Π’Π΅ΠΏΠ΅ΡΡ NPM Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ lock-ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ package-lock.json
Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½ΠΎΠ²Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ» Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² Π½Π°ΡΠ°Π»Π΅, lock-ΡΠ°ΠΉΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΏΠΎΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ npm shrinkwrap
ΠΈ Π΅Ρ npm-shrinkwrap.json
. Π Π²Ρ ΠΏΡΠ°Π²Ρ. ΠΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° Π»ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎΠ½Π΅ΡΠ΅Π½ΠΈΡ ΠΌΡΡΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ NPM Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠΎ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠΈΠΉ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, NPM Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ package-lock.json
Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ²Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΎΠ½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ npm-shrinkwrap.json
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΈ NPM Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΈ, Π·Π°ΠΏΡΡΡΠΈΠ² npm pack
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π², ΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡ
ΠΈΠ²Π°.
Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ npm shrinkwrap
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ package-lock.json
. ΠΡΠ²Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ: NPM ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ΅Ρ package-lock.json
Π² npm-shrinkwrap.json
. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ.
Π‘Π°ΠΌΠΎΠ΅ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠΎΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΎΠ±Π° ΡΠ°ΠΉΠ»Π°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ NPM ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ package-lock.json
ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ npm-shrinkwrap.json
. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ NPM.
ΠΠ±ΠΎΠ±ΡΠ°Ρ:
- NPM Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ
package-lock.json
ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρnpm-shrinkwrap.json
, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΎΠ½ (ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½). - ΠΠΎΠ²ΡΠΉ
package-lock.json
Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ. - ΠΠ°ΠΏΡΡΠΊ
npm shrinkwrap
Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°Π»ΠΈΡΠΈΡpackage-lock.json
ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π²npm-shrinkwrap.json
. - ΠΠΎΠ³Π΄Π° ΠΎΠ±Π° ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅,
package-lock.json
Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½.
ΠΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ lock-ΡΠ°ΠΉΠ» Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°ΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠΎΠ³ΠΎ shrinkwrap ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ? ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅.
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ (ΡΠΎ Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ), Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ lock-ΡΠ°ΠΉΠ». ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ shrinkwrap, Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ (Π½ΠΎΠ²ΡΠΉ lock-ΡΠ°ΠΉΠ» Π·Π°ΡΠΈΡΡΠ½ ΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ). ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ shrinkwrap? ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ NPM ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ shrinkwrap-ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ , ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ shrinkwrap Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌ ΡΠ°ΠΊΡΠΎΠΌ, ΡΡΠΎ NPM ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π΅ΡΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ semver ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ.1.0.0. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π² lock-ΡΠ°ΠΉΠ»Π΅ ΠΈ Π²ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π°ΡΡΡΠΈΠ²ΡΠ°Ρ semver, ΠΈ Π²Π°Ρ ΠΏΠ°ΠΊΠ΅Ρ Π»ΠΎΠΌΠ°Π΅ΡΡΡ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ?
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΎΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠ΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ lock-ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²Π°ΡΠ° ΡΠ±ΠΎΡΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π² CI, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΡΡ Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ PR). ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ lock-ΡΠ°ΠΉΠ»Π° CI-ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ½ΠΎΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ lock-ΡΠ°ΠΉΠ» Π² ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ. ΠΠΎ-Π²ΡΠΎΡΡΡ
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ npm update
ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ΅ΡΡΠΎΠ². Π-ΡΡΠ΅ΡΡΠΈΡ
, Π²Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ lock-ΡΠ°ΠΉΠ» ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ΅ΡΡΠΎΠ². ΠΠ°ΠΊ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Ρ ΡΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π±ΡΠ»Π° ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π°, ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°, Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ semver, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ NPM, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
Π²Π΅ΡΡΠΈΠΉ.
ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠ°Π²ΠΈΡ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠΈΡ Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ lock-ΡΠ°ΠΉΠ» Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ lock-ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ runtime-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (dev dependencies). Π ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π»).
Π₯ΠΎΡΠΎΡΠΎ, ΡΡΠΎ Π½Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²? Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°ΠΊΠ΅Ρ β ΡΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ ΡΠΎΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΄Π΅ΡΡ Π²Ρ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ shrinkwrap ΠΈ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ NPM ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ npm pack
.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² package.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.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΡΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΡΠ°Π²ΡΡΠ΅ Π»Π°ΠΉΠΊΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π°Ρ Π±Π»ΠΎΠ³ ΠΈ Π΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ. Π’Π°ΠΊ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π°, ΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ Π²Π°Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌΠΈ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΡΠΎ-ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅, ΡΠΎ Π½Π΅ Π±ΠΎΠΉΡΠ΅ΡΡ ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Ρ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΠΏΡΠΈΠΌΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈ ΡΡΡΡ Π²Π°ΡΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠΎΡΡΠ°Ρ .
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ `package-lock.json` Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²
Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² package-lock.json
, ΠΈ ΠΌΠΎΠ΅ Π±ΡΡΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΡΡΠΎΡΠ»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ npm install
. Π― Π²ΡΠ΅ΡΡΠ΅Π· Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΡΡ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡ
ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ ΠΎΠ½ΠΎ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΎΡΡΡΠΈΠΌΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ npm
Π²ΠΎΡΡΠΎΠ·Π΄Π°Π» Π΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π° Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π» ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π²ΡΡΡΠ½ΡΡ?
javascript
node.js
npm
package-lock.json
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ
John Mutuma Β Β
10 ΡΠ½Π²Π°ΡΡ 2019 Π² 07:50
3 ΠΎΡΠ²Π΅ΡΠ°
84
ΠΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° Π²Π΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ.
Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ
npm install
ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎgit pull
, Π²Ρ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° «but it works for me!!» ΠΈ «Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π²Π°Ρ»Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
npm install
, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅. Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. Π² ΡΠΎΠΉ ΡΠ°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΠΈ Π³ΠΎΠ΄Π°ΠΌΠΈ. ΠΈ ΠΏΠΎΡΠ»Π΅ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ) ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ 3-Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΈ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ.
ΠΡΠ²ΠΎΠ΄: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ package-lock.json
. Π² Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΠ΄Ρ ΠΎΠ΄ 1
- ΠΎΡΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²
package-lock.json
stash
Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡpull
ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ΄Π°- Π·Π°ΠΏΡΡΡΠΈΡΠ΅
npm install
Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ - ΠΎΡΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ΄Ρ ΠΎΠ΄ 2
- Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
- Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ «their changes only» ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π½Π°
package-lock.json
- Π·Π°ΠΏΡΡΡΠΈΡΠ΅
npm install
, ΡΡΠΎΠ±Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π²package-lock.json
- Π·Π°Π²Π΅ΡΡΠΈΡΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ(ΠΊΠΎΠΌΠΌΠΈΡΠ°) ΡΠ»ΠΈΡΠ½ΠΈΡ.
PS Π΄Π°, Π΄Π»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΈΡ
Π±Π΅Π· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "react": "16.12.0"
), ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ npm install
. ΠΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ 2+ ΡΡΠΎΠ²Π½Ρ (Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ), ΠΏΠΎΡΡΠΎΠΌΡ package-lock.json
Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ΅Π½ Π΄Π»Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
skyboyer Β Β
10 ΡΠ½Π²Π°ΡΡ 2019 Π² 11:03
38
ΠΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠ»ΠΎΡ
ΠΈΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ package.1.0.0″ , Π° ΡΠ°Π½ΡΡΠ΅ Ρ Π²Π°Ρ Π±ΡΠ»ΠΎ "moduleX": "1.0.0"
Π² package-lock.json
.
Π£Π΄Π°Π»ΠΈΠ² package-lock.json
ΠΈ Π·Π°ΠΏΡΡΡΠΈΠ² npm install
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 1.0.999 ΠΈΠ· moduleX, Π½Π΅ Π·Π½Π°Ρ ΠΎΠ± ΡΡΠΎΠΌ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (Π½Π΅ ΡΠ»Π΅Π΄ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ).
ΠΠΎ Π²ΡΡΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π²Π½ΡΡΡΠΈ
package.json
- ΠΠ°ΠΏΡΡΠΊ:
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 , ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ…
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
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, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠΌΡ
ΠΠΎΡΠ»Π΅ npm 5.0 ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ npm Π±ΡΠ΄Π΅Ρ package-lock.json. Π§ΡΠΎ ΡΡΠΎ Π·Π° ΡΡΠ½ΠΊΡΠΈΡ?
1. ΠΠ°Π±Π»ΠΎΠΊΠΈΡΡΠΉΡΠ΅ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ Π΅Π³ΠΎ Π² git, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π²ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
2. package-lock.json — ΡΡΠΎ ΡΠ°ΠΉΠ», ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ `npm install` Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° npm, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
3. ΠΠ°ΠΊΠ°Ρ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·Π°? ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ npm ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ npm Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ pacakge.ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΠΠ±ΡΠ°ΡΠ½ΠΎ (Π½ΠΎΠ²ΡΠ΅) ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π΅ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² / ΡΠ·Π»Π° Π±ΠΎΠ»ΡΡΠ΅ 8.0.33 ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ (8), ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ² / ΡΠ·Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ npm install, 8.0.35.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Π½ΠΎΠ²ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ npm — ΡΡΠΎ ΠΌΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Π²Π΅ΡΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π½ΠΎΠΉ, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ ΡΠ»Π΅Π΄ΡΡΡ ΡΡΠΎΠΌΡ ΡΡΡΠΎΠ³ΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ. : ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΠΎΠ»ΠΈΡ Π³ΠΎΠ»ΠΎΠ²Π°: Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π±Π°Π·Π΅ ΠΊΠΎΠ΄Π° nodejs, Π² ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ npm Π²Π΅ΡΡΠΈΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠ°ΠΊΠΆΠ΅ Π Π°Π·Π½ΡΠ΅, ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅.
ΡΠ΅ΡΠΈΡΡ:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ npm Π½Π°ΡΠ°Π»Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ package-lock.json, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π½Π°Π»ΠΈ, ΡΡΠΎ ΠΏΠΎΠΊΠ° Π²Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΡΡΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ .json, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π·.
4. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ package.json
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΠ°ΠΉΠ» package.json ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΈΡΡΠΎΠΉ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΈ, ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ npm, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ Π£ΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΡΡΠΈ Π±ΠΎΠΈΠΌΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΆΠ΅Π»Π°Π½ΠΈΡ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ / Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΈ Ρ.Π΄., ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΉΠ» package-lock.json Π²ΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ ΠΎΠ½ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π² Π²Π°Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ. ΠΡΠ° Π²Π΅ΡΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°.
5. Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
Π§ΡΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅?
Π Π°Π½ΡΡΠ΅: ΡΠ°Π½ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Π² package.json, Π° Π·Π°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ npm.
Π‘Π΅ΠΉΡΠ°Ρ: Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²Π΅ΡΡΠΈΠΈ 5, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π΅ΡΡΠΈΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° Π² package-lock.json, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ npm install xxx @ xxx Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° Π·Π°ΡΠ΅ΠΌ package-lock.json ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠ»ΠΈ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» jquery 2.1.4 ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» package.json ΠΈ package-lock.json ΠΈΠ· git, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΌΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° npm ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² node_modules?
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Ρ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΎΠ²Π΅Π» ΡΠ΅ΡΡ. ΠΠΎΡΠ»Π΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² package.json ΠΈ package-loc.json, npm install ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠΈ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ, Π²Π°ΡΠ° ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ npm install.
1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
Karma — ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π΄Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ.
Karma — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄ JavaScript Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ , ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π΄Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π½Π΅ Π±ΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ Π² ΡΠ΅ΡΡΠ΅ Π² ΡΡΠ΅Π΄Π΅ ΡΠ·Π»Π°; ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ, ΠΊΠ°ΡΠΌΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ (Chrome, Firefox, Ρ.Π΅. ΠΈ Ρ. Π΄.). ΠΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ·Π»Π°, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΠΌΡ.
ΠΠΎΠ³Π΄Π° ΠΌΠ½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΠ°ΡΠΌΡ?
- Π₯ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅
- Π₯ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ (ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΏΠ»Π°Π½ΡΠ΅Ρ ΠΈ Ρ. Π.)
- Π₯ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
- Π₯ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
- Π₯ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅
- ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΄Π»Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ
- Π― Π½Π΅ Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΏΠ»ΠΎΡ ΠΎ
- Π₯ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π‘ΡΠ°ΠΌΠ±ΡΠ» Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΠΈ
- Π₯ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ RequireJS Π΄Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ²Π°, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
Π‘Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΊΠ°ΡΠΌΡ, ΡΡΠΎΠ±Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΊΠ°ΡΠΌΡ
image.png
- ΠΠ°ΠΊΡΡ ΡΡΠ΅Π΄Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
(1) Jasmine (BDD, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅)
(2) Mocha
β ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ JavaScript, ΡΠ°ΠΊ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ JavaScript.
β‘ ΠΡΠ΅ ΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ.
β’ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΠΎ, ΠΏΠΎΡΠ»Π΅, beforeEach ΠΈ afterEach Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
(3) QunitοΌJqueryοΌ
(4) Nodeunit (ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π΄Π»Ρ node.js ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ².)
(5) Nunit (ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² VS) - ΠΡ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ require.js? ΠΠ΅Ρ (ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ AMD)
- ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Ρ
Π²Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΡ?
(1) Chrome
(2) ChromeHeadless (Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Google Chrome Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· Π³ΠΎΠ»ΠΎΠ²Ρ — Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π±Π΅Π· Π³ΠΎΠ»ΠΎΠ²Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ)
(3) ChromeCanary (Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ Chrome ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ / Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΏΡΡΡΠΌ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΡ Π·Π½Π°ΡΠΊΠΎΠ², ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ ΠΈ Ρ. Π΄., ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ Chrome ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· ΠΏΠΎΠΌΠ΅Ρ )
(4) Firefox
(5) Safari
(6) PhantomJS (ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° JavaScript API webkit, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ QtWebKit Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Π° webkit ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° JavaScript)
(7) Opera
(8) IE - ΠΠ΄Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ? Β»./tests/unit/*.spec.js’
- Π‘Π»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΠ°ΠΉΠ»Ρ, Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½?
- ΠΡ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Karma ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π»Π° Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π»Π° ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ?
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Karma.conf.js (Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ:Conf, Π° Π½Π΅ config)
// Karma configuration
// Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ 4 Π°ΠΏΡΠ΅Π»Ρ 2019 Π³., 09:59:06 GMT + 0800 (ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ)
const webpackConfig = require('@vue/cli-service/webpack.config.js')
module.exports = function(config) {
config.set({
// ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΡΠ°ΠΉΠ»Π°Ρ
ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
Π°ΡΡΠΈΠ±ΡΡΡ
basePath: '',
// ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΡ: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha'],
// Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π² Π±ΡΠ°ΡΠ·Π΅Ρ
files: [
'./tests/unit/*.spec.js'
],
// Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²
exclude: [
'node_modules'
],
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅
// ΠΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'**/*.spec.js': ['webpack']
},
// ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ΅ΡΡΠ°
// ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: Β«ΡΠΎΡΠΊΠΈΒ», Β«ΠΏΡΠΎΠ³ΡΠ΅ΡΡΒ»
// ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΡΠ΅ΡΡ: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// ΠΠΎΠΌΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°
port: 9876,
// ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ webpack
webpack: webpackConfig,
// ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° Π² Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΎΡΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΆΡΡΠ½Π°Π»Π΅
colors: true,
// ΡΡΠΎΠ²Π΅Π½Ρ ΠΆΡΡΠ½Π°Π»Π°
// ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
autoWatch: true,
// Π’Π΅ΡΡΠΈΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
// ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Karma ΠΎΡΠΊΡΠΎΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠ΅ΡΡ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²ΡΠΉΠ΄Π΅Ρ
singleRun: false,
// Π£ΡΠΎΠ²Π΅Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ²)
concurrency: Infinity
})
}
webpack.test.config.js
var path = require("path")
var webpack = require("webpack")
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
var webpackConfig = {
module: {
rules: [
// babel-loader
{
test: /\.js$/,
use: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
// vue loader
{
test: /\.vue$/,
use: [{
loader: 'vue-loader',
options: {
loaders: {
js: 'babel-loader'
},
}
}]
},
]
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
})
]
}
module.exports = webpackConfig
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Babel-loader js, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ js, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, Π² js, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ
- babel-core: ΡΠ°ΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ babel, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ API ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Babel, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ babel.transform, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΊΠΎΠ΄Π°. Babel-loader, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ webpack, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠΈ API Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°.
- babylon: Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΡΠ΅Ρ Π΄Π»Ρ js
- babel-traverse: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° AST (Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ), Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π»Ρ ΠΏΠ»Π°Π³ΠΈΠ½Π°
- babel-generator: Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ AST
ΠΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΊΠΎΠ΄ ES6 Π² ΠΊΠΎΠ΄ ES5
image.png
Π-ΡΡΠ΅ΡΡΠΈΡ , ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΡΠΌΡ
npm install --save-dev @vue/test-utils karma karma-chrome-launcher karma-mocha karma-sourcemap-loader karma-spec-reporter karma-webpack mocha
image.png
Π§Π΅ΡΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π² package.json
"test:karma": "karma start"
Π’ΠΎΠ³Π΄Π° Π±Π΅Π³ΠΈ
npm run test:karma
ΠΠ»ΠΈ Π±Π΅Π³ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ
karma start
image.png
Β
image.png
Β
Β
ΠΠ΅Π· ΠΊΠ°ΡΠΌΡ (ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΊΠΊΠΎ)
Β
Β
Β
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 Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΆΠ°Π»ΠΎΠ± Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Ρ ΡΠ½ΠΈΠΌΠ°Ρ package-lock.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
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ package-lock.json
, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ Π²Π°ΠΆΠ΅Π½ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ NPM CLI Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. .
ΠΡΡΠΎΡΠΈΡ
NPM Π²Π΅ΡΡΠΈΠΈ 5 ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» package-lock.json
ΠΊΠ°ΠΊ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ° ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π΄Π°Ρ , Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠ΅, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ.4.16.4 «.
ΠΠ·Π΄Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ (Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ package-lock.json
) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ express
Π²Π΅ΡΡΠΈΠΈ 4.16.4, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΡΠ»ΠΈ express
ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π΅Π³ΠΎ, Ρ ΠΌΠΎΠ³Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°ΡΠ΅ΡΠΊΠΈ
Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π΅ΡΡΠΈΡ 4.17.x ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΌΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π΅ ΡΠ΄Π°ΡΡΡΡ, Π½ΠΎ ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ ΡΠ»ΡΡΠΈΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π΄Π°Π΅Ρ ΡΠ±ΠΎΠΉ.
ΠΠΎ Π²Π΅ΡΡΠΈΠΈ 5 NPM Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±Ρ ΡΠ΅ΡΠΌΠΎΡΡΠ°Π΄ΠΎΡΠ½ΡΡ ΠΏΠ»Π΅Π½ΠΊΡ
. ΠΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ package-lock.json
ΡΠ΅ΠΌ, ΡΡΠΎ Π΅Π³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π²Π°ΡΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π² ΡΠ΅Π΅ΡΡΡΠ΅ NPM, Π° package-lock.json
— Π½Π΅Ρ.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NPM + 5, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ package-lock.json
Π΄Π»Ρ Π½Π΅ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ Π΅Π³ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠΌ, Ρ ΠΎΡΠΈΡΠ΅ Π»ΠΈ Π²Ρ, ΡΡΠΎΠ±Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ ΡΠΎΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π΄ΠΈΠΊΡΡΠ΅ΡΠ΅, ΠΈΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ. ΠΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ.
ΠΡΠ°ΠΊ, package-lock.json
Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. Π€ΠΎΡΠΌΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ NPM.
ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π² Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ VCS — ΡΡΠΎ Π²Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ — Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΡ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠΎΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠ΅Π³Π΄Π° ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ package-lock.json
Π² VCS, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΠ½ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ.
package.json
ΠΈ package-lock.json
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ package-lock.json
Π½Π°ΠΏΡΡΠΌΡΡ. ΠΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ NPM. ΠΠ½ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² package.json
Π² package-lock.json
, ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ CLI NPM Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΡΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ package.json
, Π½Π΅ ΠΆΠ΄ΠΈΡΠ΅, ΡΡΠΎ package-lock.json
ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡ. ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
, ΡΠ΄Π°Π»ΠΈΡΡ
ΠΈ Ρ. Π.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NPM CLI
NPM Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠ° .json
, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NPM ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ.
ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° npm (Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)
install
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΊ package.json
, ΡΠ°ΠΊ ΠΈ package-lock.json
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
npm ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΡΠΏΡΠ΅ΡΡ body-parser cors
npm install (Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)
install
ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ package-lock.json
.
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ install
ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ package-lock.json
, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΎΠ½ ΡΡΡΠ°ΡΠ΅Π».
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π²ΡΡΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ package.json
— ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ — Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡ npm install
, ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ -lock.json
, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π·ΠΈΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΡΠΎΡΡΠΎ.ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ npm install
, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ, ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΊΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π°ΡΠ΅ΠΌ Π΄Π΅ΡΠ΅Π²Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ»Π°.
Π’Π°ΠΊΠΆΠ΅ Π²Π΅ΡΡΠΌΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ Π΄Π΅ΡΠ΅Π²Π΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ»Π° Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΡ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
npm ΡΠ΄Π°Π»ΠΈΡΡ
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ , ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅
, Π½ΠΎ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ package.json
, ΡΠ°ΠΊ ΠΈ package-lock.Π‘ΠΈΠΌΠ²ΠΎΠ»
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ NPM ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ 1.X.X
, ΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ~
Π±ΡΠ΄ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΈΠ»ΠΈ 1.4.X
.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΡΡΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ package-lock.json
ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ (Π½ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ).
Π½ΠΏΠΌ ci
ci
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ package-lock.json
Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π·Π΄Π΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ package-lock.json
Π½ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΊΠΈΡ
ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ
.
ΠΠ³ΠΎ ΡΠ΅Π»Ρ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ, Π³Π΄Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΠΎΠ± ΡΡΠΈΡ
Π²Π°ΠΆΠ½ΡΡ
Π²ΡΠ²ΠΎΠ΄Π°Ρ
ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ package-lock.json
:
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ npm install
Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ npm ci
.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ npm install
Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ npm ci
Π²Π΅Π·Π΄Π΅, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ — Π΄Π°ΠΆΠ΅ Π² Π²Π°ΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡΡΡ Π·Π°Π΄Π°ΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ°Π· Π² ΠΌΠ΅ΡΡΡ, Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. (Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ββΡΠ»ΡΠΆΠ±Ρ, ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠΊΡΡΡΠΈΠ΅).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ, ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π΄ΠΎΠ»ΠΆΠ΅Π½Π½ΠΎΡΡΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
Π·Π°Π³Π»ΡΡΠΊΠ°
LogRocket: ΠΏΠΎΠ»Π½Π°Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ Π²Π°ΡΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
LogRocket — ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ³Π°Π΄ΡΠ²Π°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π° ΠΈ Π΄Π°ΠΌΠΏΡ ΠΆΡΡΠ½Π°Π»Π°, LogRocket ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ΅Π°Π½Ρ, ΡΡΠΎΠ±Ρ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· Redux, Vuex ΠΈ @ ngrx / store.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Redux, LogRocket Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΆΡΡΠ½Π°Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΠΎΡΠΈΠ±ΠΊΠΈ JavaScript, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°, ΡΠ΅ΡΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ / ΠΎΡΠ²Π΅ΡΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ΅Π»Π°ΠΌΠΈ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Ρ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ DOM Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ HTML ΠΈ CSS Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, Π²ΠΎΡΡΠΎΠ·Π΄Π°Π²Π°Ρ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΌ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠ°ΠΌΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° json? Π€Π°ΠΉΠ»Ρ Lockfiles Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΡΡΠΆΠΈ ΠΈ npm
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ package-lock.json?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° npm package-lock.json , Π° ΡΠ°ΠΊΠΆΠ΅ yarn.lock Yarn. Π€Π°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ»ΡΠΆΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ Ρ. Π. — Π΄Π»Ρ ΠΎΡ Π²Π°ΡΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π€Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ½Π°ΡΠ°Π»Π° Π²Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠ³Π΄Π° Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠ΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββ
- Π₯ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ Π±ΡΠ» ΠΏΠΎΠ΄Π΄Π΅Π»Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
- Π Π°Π·ΡΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π΅ΡΡΡΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, ΠΎΡΠΊΡΠ΄Π° Π±ΡΠ» ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΠΎΡΠΊΡΠ΄Π° ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ ΡΠ°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ?
Π€Π°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΉ Π²ΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.1.0.0 , ΡΠΎ Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ dummy-pkg . ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ dummy-pkg , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²Π΅ΡΡΠΈΡ 1.0.0, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π²ΡΠΏΡΡΠΊΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ 1.0.1. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΏΠΎΠ»ΡΡΠΈΡ dummy-pkg Π²Π΅ΡΡΠΈΠΈ 1.0.1 Π²ΠΌΠ΅ΡΡΠΎ Π²Π΅ΡΡΠΈΠΈ 1.0.0.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΡΡΠ°Π½ΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌ Π΄Π΅ΡΠ΅Π²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅, ΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ CI.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ?
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ npm:
- ΠΡΡΠΆΠ° ΠΠ°ΠΌΠΎΠΊ ΠΏΡΡΠΆΠΈ
- npmβs package-lock.json
ΠΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΡΡΡΠ΅ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠΈ Π΄Π²Π°:
ΠΠ° ΡΡΠΎΠΉ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ npm package-lock.json
, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Π·Π΄Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° yarn.lock. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ — ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° npm Π½Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΏΡΡΠΆΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.lock, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΡ
ΠΈΠ², Π΅ΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ Π² ΡΠ°ΠΉΠ»Π΅ .npmignore
. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ.
Π yarn, ΠΈ npm Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ; ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΈΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ Π΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠ°ΠΏΠΈΠ»ΡΠ½ΠΈΠΊΠΈ Ρ ΡΠ΅ΡΠΌΠΎΡΡΠ°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π΅Π½ΠΊΠΎΠΉ
ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π°.
ΠΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π€Π°ΠΉΠ» npm-shrinkwrap.json
Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΠ΅Ρ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ npm ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΡΠ΅Π΅ΡΡΡΠ΅. Π§ΡΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ npm, ΡΠ°ΠΉΠ» shrinkwrap Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ, Π° Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ semver, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ yarn ΠΈ npm ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ npm-shrinkwrap.json
, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
- npm Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²
npm-shrinkwrap.json
, Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΠΏΠ°ΠΏΠΊΡ node_modules /ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΡΠ³Π»Π°Π΄ΠΈΡΡ ΡΡΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ.
- Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ
npm-shrinkwrap.json
ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ.
ΠΡΡΠΆΠ°
ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ΅Π½ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΡΠΌΠΎΡΡΠ°Π΄ΠΎΡΠ½ΡΡ ΠΏΠ»Π΅Π½ΠΊΡ? Π§ΡΠΎ ΠΆ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΆΠ°ΡΡΠΉ ΡΠ°ΠΉΠ», Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ. Π₯ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ hapijs.
ΠΠ°ΠΏΠΈΠ»ΡΠ½ΠΈΠΊΠΈ Π΄Π»Ρ Π΄ΡΠ΅ΠΉΡΡΡΡΠΈΡ Π·Π°ΠΌΠΊΠΎΠ²
Π€Π°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΎΠ½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΈΠΊΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²Π½Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΊΠ΅Ρ ?json
ΠΈ Π·Π°Π±ΡΠ»ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ?
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡ package.json
Π½Π΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ npm ΠΈ yarn, ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ. Π₯ΠΎΡΡ ΡΡΠΎ Π·Π²ΡΡΠΈΡ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠ΅ΡΠ΅ΠΏΡ Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ CI.
ΠΡΠ»ΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΠΉ ΠΈΠ·-Π·Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡ Π·Π°ΡΠ²Π»Π΅Π½Π½ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ package.json
, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π²Π΅ΡΡΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΡΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ Π²ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌ ΡΠ°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
$ yarn install --frozen-lock ΡΠ°ΠΉΠ»
$ npm ci
Lockfiles Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΠ½Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ - Π½Π΅ ΡΡΠΎΠ»ΡΠΊΠΎ. ΠΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ?
ΠΠ»Π°Π²Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ² Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π΅ Π·Π°ΠΌΠ΅ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄ΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΠΈΡΠ½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ±ΠΎΡΠΎΠΊ.
ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ - Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΠ΅ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π°ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±ΡΠ΄ΡΡ Π½Π°ΡΡΡΠ΅Π½Ρ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ CI Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
- ΠΠ΄ΠΈΠ½, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- ΠΡΡΠ³ΠΎΠΉ - ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ semver.
ΠΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ Π²Π°ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ - ΠΈ Π²ΡΠ΅ ΡΡΠΎ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΡΡΠ°ΡΡΠ»ΠΈΠ²ΡΠΉ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ package-lock.json?
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ package.json
ΠΈ package-lock.json
, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ package-lock.json
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, Π·Π° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ package.json
, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ΠΉ - ΠΡΠ½ΠΎΠ²Ρ Package.json.
ΠΠ°ΠΊ package-lock.json ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π΅ΡΠ΅Π²ΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΏΠ°ΠΊΠ΅Ρ-Π·Π°ΠΌΠΎΠΊ.json
- ΡΡΠΎ ΡΠ°ΠΉΠ», ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ npm (Π½Π°ΡΠΈΠ½Π°Ρ Ρ v5 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
ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ,
ΡΠ°ΠΉΠ» package-lock.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 vs package.json: ΠΠΎ ΡΡΠΎ Π·Π° ΡΠ΅ΡΡ package-lock.json?
Π’Π°ΠΊ ΡΡΠΎ Π΄Π°, Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² package-lock.json !!
package-lock.json - ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΏΠ°ΡΡΠΈ Π²Π°Ρ ΠΎΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° boom boom bam bam π₯ Π² Π²Π°ΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ .
ΠΡΠ°ΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².json ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΈ package.json.
Semantic versioning ΠΈΠ»ΠΈ SemVer - ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ 1.4.5
(major.minor.patch)
1Π°. ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ / Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΡΡΠ°
ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ / ΠΎΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Ρ. Π.
1Π±. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ
ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ API, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠ°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ· ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ. Π’Π°ΠΊ ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° v1.1.0 Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 1.9.0.
1Ρ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π²Π΅ΡΡΠΈΡ
ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π»ΠΎΠΌΠ°Π΅ΡΡΡ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ API ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° v1.0.0, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° v2.0.0
package.json - ΡΡΠΎ ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ (ΠΈΠΌΡ, Π²Π΅ΡΡΠΈΡ ΠΈ Ρ. Π.), Π Π² Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π²ΡΡΠ΅, ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² package. ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΡΡΠ°)
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π°ΡΡΡΠ°Ρ Π»ΡΠ±ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠ»Π°Π΄ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ°ΠΊ, ΠΏΠΎΠ·ΠΆΠ΅ npm Π²ΡΠΏΡΡΡΠΈΠ» Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ package-lock.json, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π².
package-lock.json ΠΏΡΠΎΡΡΠΎ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ»Π°Π΄ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅Ρ Π²Π°ΡΠ΅ ΡΠ΅ΠΏΠΎ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ npm install Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. NPM ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΈ ~
ΠΈΠ· package.json.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· npm Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ npm.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ package-lock.json ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π±Π»ΠΎΠ³Π΅ npm.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ ΡΡΠΎ!
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ π π
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬: ΠΡΠ°ΠΊ, ΡΠΈΡΠ°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Ρ ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ package-lock.json, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΌΠ½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ, Ρ Π΄ΡΠΌΠ°Ρ, Π²ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π·
EDIT2: Π¦ΠΈΡΠ°ΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΡΡ ΠΠ°ΡΡΠ°Π½
(https: // dev.to / zkat / comment / epbj) ΠΡΠΎ ΠΎΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π»Π° npm ci
ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° package-lock.json Π² NPM
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π² package-lock.json | ΠΠ»ΠΎΠ³ TkDodo
Π― Π±Ρ Ρ ΠΎΡΠ΅Π» Π½Π΅ ΡΡΠ°ΡΠΈΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² git, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ.
ΠΡΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ. ΠΡΠΎ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π²Π΅ΡΠ΅Π»ΠΎ.
ΠΠ΄Π½Π° Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠΈΡΡ Π΄ΠΎΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π½Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, — ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»Π°Ρ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ package-lock.json.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ Π²Π΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ.ΠΠ°ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΈ ΡΠΎΡ, ΠΊΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡ ΡΠ²ΠΎΠΉ PR Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ, ΡΠΎΡ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°Π» ΡΡΠΈΡ
ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ².
ΠΡΠΎ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π³ΠΎΠ½ΠΊΠ°.
ΠΡΠ°ΠΊ, Π²Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ PR Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ, ΠΈ git ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π°ΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π² package-lock.json.
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π² package.json ΠΎΠ±ΡΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π΅ΡΡΡ), ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π·Π°ΠΌΠ°Π½ΡΠΈΠ²ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ package-lock.json ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ npm install
.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΡΡΠΎ Π΄Π°ΡΡ Π²Π°ΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².4.2.1 ΠΊΠ°ΠΊ Π²Π΅ΡΡΠΈΡ,
ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΎΡ 4.2.1 Π΄ΠΎ 4.17.20 (ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ)
ΠΠΎΡ Π·Π΄Π΅ΡΡ-ΡΠΎ ΠΈ Π²ΡΡΡΠΏΠ°Π΅Ρ Π² ΠΈΠ³ΡΡ package-lock.json. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠ½ «Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ» Π²Π°Ρ Π½Π° ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ 4.2.1 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΡΡΠ° Π²Π΅ΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½Π° Π² package-lock ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ.
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²ΡΠΉΠ΄ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ Π½ΠΈΠΌ.
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΈ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ CI / CD.
Π― Π±Ρ Π½Π΅ Ρ
ΠΎΡΠ΅Π» Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ , ΡΠ΅ΠΌ ΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΠ°ΡΡ.
ΠΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ package-lock.json, Π²ΡΡ ΡΡΠ° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΠΈΡΡΠ΅Π·Π°Π΅Ρ.
ΠΠ°ΠΆΠ΄ΡΠΉ node_module, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ Π·Π°Π²ΠΈΡΠΈΡΠ΅, Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π±Π΅Π· ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ ΠΌΠ΅Π»ΠΎΡΠ΅ΠΉ ΠΈ ΠΏΠ°ΡΡΠ΅ΠΉ.Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΠ»ΠΎΡ
ΠΎ ΠΏΠΎ ΡΡΠ΅ΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ:
- ΠΠ½ ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΠΈ Ρ ΠΈΡΠΊΡΠ΅Π½Π½Π΅ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ.
- ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π½ΡΠ»Π΅Π²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Π° ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ. ΠΠ· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ semver:
ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π½ΡΠ»Π΅Π²Π°Ρ Π²Π΅ΡΡΠΈΡ (0.y.z) ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ API ΠΠ Π‘ΠΠΠΠ£ΠΠ’ ΡΡΠΈΡΠ°ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ.
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ²ΠΎΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ Π·Π°ΠΌΠΎΠΊ.), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π²Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ — Π½Π΅Ρ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΠΈΡΠ΅ package-lock.json ΡΠ΅ΠΉΡΠ°Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΠ΅ npm install
, ΠΎΠ½ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΈΠ½Π°ΡΠ΅.
ΠΡΠ΄Π΅Ρ Π»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅? ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅Ρ. ΠΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: Β«ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠ΅Π³ΠΎΒ», ΡΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΠΎ, ΡΡΠΎ Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΡΠ°Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ.
Π§ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ
ΠΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π±ΡΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
- Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅.json
- ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ package-lock.json ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ
- ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΠ΅ npm install
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²Π½Π΅ΡΠ»ΠΈ Π² Π½Π°ΡΡ Π²Π΅ΡΠΊΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ ΡΠ·Π½Π°Π» ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅:
npm ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π² package-lock.json ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΡ
Π·Π° Π½Π°Ρ.
ΠΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ npm:
ΠΠ½ΠΎΠ³Π΄Π° Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ npm ΡΠΎΠ·Π΄Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ. ΠΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° npm @ 5.