Yarn: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ `--pure-lockfile` ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для` install`

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 10 ΠΎΠΊΡ‚. 2016  Β·  54ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: yarnpkg/yarn

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ _Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ_ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ _ ΠΎΠ± ошибкС?

_характСрная Ρ‡Π΅Ρ€Ρ‚Π°_

Каково Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅?

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ --pure-lockfile для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ install сбиваСт мСня с Ρ‚ΠΎΠ»ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это измСняСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ установкС node_modules.
ΠœΡ‹ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ ΠΎ сСмантикС, Ρ‡Ρ‚ΠΎ add/upgrade/remove ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для измСнСния зависимостСй, Π° install - для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ пСрСстроСния node_modules ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ тСряСтся, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ измСняСтся Π² зависимости ΠΎΡ‚ срСды (установлСнная Π² настоящСС врСмя вСрсия yarn).

КакоС оТидаСмоС повСдСниС?

НС ΠΏΠΈΡΠ°Ρ‚ΡŒ yarn.lock ΠΈΠ»ΠΈ package.json ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ yarn install .
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ yarn.lock, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ yarn upgrade

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ваш node.js, yarn ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

пряТа 0,14

cat-feature needs-discussion

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π—Π΄Π΅ΡΡŒ происходит ΠΊΡƒΡ‡Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π³Π°Π΄Π°Ρ‚ΡŒ (Π±Π΅Π· ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€Π°).

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, люди Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈ ряд Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΡΡ‡ΠΈΡ‚Π°ΡŽ бСсспорными (ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вносят Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ошибок повСдСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я скоро Π΄ΠΎΠ±Π΅Ρ€ΡƒΡΡŒ).

Из исходного ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΎΠ± ошибкС.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ тСряСтся, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ измСняСтся Π² зависимости ΠΎΡ‚ срСды (установлСнная Π² настоящСС врСмя вСрсия yarn).
КакоС оТидаСмоС повСдСниС?
НС ΠΏΠΈΡˆΠΈΡ‚Π΅ yarn.lock ΠΈΠ»ΠΈ package.json ΠΏΡ€ΠΈ установкС пряТи.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ yarn.lock, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ yarn upgrade

Π’ΠΎΡ‡Π½Π΅Π΅, оТидаСмая сСмантика, Π½Π° ΠΌΠΎΠΉ взгляд, Ρ‚Π°ΠΊΠΎΠ²Π°:

  • Ссли package.json Π½Π΅ измСнилось с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго измСнСния yarn.lock , yarn.lock являСтся источником истины ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ обновлСнию.
  • Ссли package.json измСнилось с послСднСго Ρ€Π°Π·Π°, yarn.lock измСнилось, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ yarn.lock Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ удовлСтворяло package.json ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ node_modules .
  • Ссли yarn update Π·Π°ΠΏΡƒΡ‰Π΅Π½, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ всС зависимости ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ всСго, Ρ‡Ρ‚ΠΎ удовлСтворяСт package.json .

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

Если это Π½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пряТи, я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ошибка.


@esphen написал:

Π― согласСн. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ yarn install ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ записываСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ всСй ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ссли ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ вСрсии?

Π― Π΄ΡƒΠΌΠ°ΡŽ, это пытаСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ yarn Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ссли ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ всС Π΅Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½. Π― согласСн с этим.

Π― согласСн с ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ @bestander , Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ / ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ / ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ.

Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ package.json Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ yarn.lock . На ΠΌΠΎΠΉ взгляд, Ссли ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ package.json Π½Π΅ удовлСтворяСт yarn.lock , ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ yarn.lock .

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

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ пряТи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ package.json . РСгистрируя Π΅Π³ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ участники, CI ΠΈ производствСнный ΠΊΠΎΠ΄ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ вСрсии.


@Guuz сказал:

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ я это понимаю:
yarn устанавливаСт всС зависимости, Π° Ρ‚Π°ΠΊΠΆΠ΅ измСняСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. На сСрвСрС CI Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ yarn install --pure-lockfile?

Π­Ρ‚ΠΎΡ‚ вопрос пСрСкликаСтся с ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, высказанных Π² этой Ρ‚Π΅ΠΌΠ΅.

Cargo ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„Π»Π°Π³ --locked ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: «Если package.json Π½Π΅ удовлСтворяСт yarn.lock , это ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ошибка». Π£ Bundler Π΅ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π»Π°Π³ ( --frozen ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° Heroku принял Bundler, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ людям ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΎΠ½ΠΈ внСсли Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² свои Gemfile ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Gemfile.lock .

ИдСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя вашСй Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² package.json ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ пряТу, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ, Ρ‡Ρ‚ΠΎ yarn.lock остаСтся синхронизированным (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ вСрсии Π² package.json всСгда соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅).

Но ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ практичСски всСгда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка расхоТдСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ внСсли измСнСния Π² package.json , Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ yarn ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ yarn.lock . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вСрсии Π² вашСм package.json Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ фактичСским вСрсиям, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΈ запускС прилоТСния , Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ сказали, Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ пряТи.


@esphen сказал:

На ΠΌΠΎΠΉ взгляд, ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ выполняСт ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², - максимально ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΎΡΡ‚Π°Ρ установка пряТи Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это бСсспорно.

Π‘ npm Ρƒ мСня Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ случаСв, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ»ΠΈΡΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΈ случаи ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹Ρ… зависимостСй, пСрСводящих вСрсии Π² вСрсии с критичСскими измСнСниями ΠΈΠ»ΠΈ просто Π½Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° semver. Π― надСялся, Ρ‡Ρ‚ΠΎ yarn Ρ€Π΅ΡˆΠΈΡ‚ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ Ссли Π²Ρ‹Π²ΠΎΠ΄ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ yarn install --pure-lockfile, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π° 100% ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ построСн, Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ.

Запуск yarn install --pure-lockfile Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ, Π΄Π°ΠΆΠ΅ Ссли вСрсии Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ с вСрсиями, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² package.json . Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свои yarn.lock послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² package.json .

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

Если package.json Π½Π΅ измСнилось, Π½Π° ΠΌΠΎΠΉ взгляд, это ошибка, Ссли yarn.lock обновляСтся. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄ΠΈΠ½ случай ошибки ΡƒΠΊΠ°Π·Π°Π½ Π² исходном ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅:

lockfile измСняСтся Π² зависимости ΠΎΡ‚ срСды (установлСнная Π² настоящСС врСмя вСрсия yarn).

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ошибка, ΠΈ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

ПозТС Π² Ρ‚Π΅ΠΌΠ΅ @thejameskyle сказал:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ memoize, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ…ΠΎΠ΄ΠΎΠΌ являСтся package.json, Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ - yarn.lock.

На ΠΌΠΎΠΉ взгляд, это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π° ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ модСль (Β« yarn.lock ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° измСнилось package.json Β»), ΠΈ Ссли абстракция просочится, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.


@adamchainz сказал:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ: наша сборка содСрТит coffeescript ΠΈΠ· Github Π² качСствС подзависимости. coffeescript ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ yarn.lock Π² нашСм процСссС сборки, запустив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ yarn install

ΠΈ ΠΏΠΎΠ·ΠΆΠ΅:

Но Ρƒ Π½Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ссли Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ устанавливаСтся ΠΈΠ· github, ΠΊΠ°ΠΊ я сообщал Π²Ρ‹ΡˆΠ΅.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ yarn Π½Π΅ рассматриваСт git sha ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсии зависимостСй git. Π£ Cargo ΠΈ Bundler Π΅ΡΡ‚ΡŒ концСпция Β«Ρ‚ΠΎΡ‡Π½ΠΎΠΉΒ» вСрсии, которая сСриализуСтся Π² Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ; для источников git "Ρ‚ΠΎΡ‡Π½ΠΎΠΉ" вСрсиСй являСтся SHA. Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΎΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго лишь package.json ΠΈ yarn.lock ΠΈ запускаСтС yarn , вся информация, нСобходимая для получСния ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½.

Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ я пропустил это взаимодСйствиС ΠΏΡ€ΠΈ просмотрС исходного ΠΊΠΎΠ΄Π° git; Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ отслСТиваниС SHA, Π½ΠΎ yarn install Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π³ΠΈΠ΄Ρ€Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ зависимостСй Π΅Π³ΠΎ ΡƒΠ²Π°ΠΆΠ°Π΅Ρ‚.


TL; DR

Π― согласСн с @thejameskyle ΠΈ @kittens, Ρ‡Ρ‚ΠΎ yarn.lock слСдуСт ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с package.json автоматичСски, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСрсии, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΈΡ… package.json ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈΡ… прилоТСния.

Однако, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π΅ΡΡ‚ΡŒ нСсколько ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ‚ΠΎΠΊ Π² yarn.lock Π΄Π°ΠΆΠ΅ Ссли package.json Π½Π΅ измСнился:

  • ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии пряТи Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… обновляСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ
  • зависимости git ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Π΄Π°ΠΆΠ΅ Ссли package.json Π½Π΅ обновляСтся, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‚Π΅ΠΌ обновляСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Ρ„Π»Π°Π³Π° Cargo --locked , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² CI для быстрого сбоя сборки, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ обновляСт package.json ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ yarn.lock .

ВсС 54 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― согласСн. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ yarn install записываСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ всСй ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ссли ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ вСрсии?

Π•ΡΡ‚ΡŒ случай, ΠΊΠΎΠ³Π΄Π° yarn install создаСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ссли Π΅Π³ΠΎ Π½Π΅Ρ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для использования yarn , Π½ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для постоянного написания этого Ρ„Π°ΠΉΠ»Π° Π½Π΅ ясны. Π― согласСн с ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ @bestander , Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚.Π΅. add/upgrade/remove .

Π”ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ способ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±Π΅Π· add/remove/upgrade ex: Π² сцСнарии, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ обновляСтС Yarn ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ?

Π― полагаю, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ

yarn install --save-lockfile

17 октября 2016 Π³. Π² 18:53 ДТСймс Айд написал Π½Π° [email protected] :

Если Π΅ΡΡ‚ΡŒ способ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±Π΅Π· добавлСния / удалСния / обновлСния
ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π² сцСнарии, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ обновляСтС Yarn, ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ
вСрсия?

-
Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вас упомянули.
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, просмотритС Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/yarnpkg/yarn/issues/570#issuecomment -254282256 ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π²ΡƒΠΊ
Π½ΠΈΡ‚ΡŒ
https://github.com/notifications/unsubscribe-auth/ACBdWJLpdvqiwcBwqE4KB3x3f4oCn_nVks5q07YYgaJpZM4KSlSw
.

МСня это Ρ‚ΠΎΠΆΠ΅ смущаСт. Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ повСдСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ?

Afaik, для повСдСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ Π±Ρ‹Π»ΠΎ вСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½.
ИдСя, я полагаю, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ людСй Β«Π²Π΅Ρ‡Π½ΠΎΠ·Π΅Π»Π΅Π½Ρ‹ΠΌΠΈΒ».

ΠšΡΡ‚Π°Ρ‚ΠΈ, PR привСтствуСтся

Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пряТа ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ install которая Π±Ρ‹Π»Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° install/add/upgrade

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ я это понимаю:

yarn устанавливаСт всС зависимости, Π° Ρ‚Π°ΠΊΠΆΠ΅ измСняСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. На сСрвСрС CI Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ yarn install --pure-lockfile ?
ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ измСняСтся Π²ΠΎ врСмя установки? ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ обновляСтС ... Yarn Π΄ΠΎΠ»ΠΆΠ΅Π½ просто ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠ°ΠΊ описано Π² Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π²Π΅Ρ€Π½ΠΎ?

Бпасибо за объяснСниС!

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ чистый, люди Π·Π°Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

@kittens Π Π°Π·Π²Π΅ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ / ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ / ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²? Они всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ установку.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ чистый, люди Π·Π°Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ считаСтС основной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ диспСтчСра ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

На ΠΌΠΎΠΉ взгляд, ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ выполняСт ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², - максимально ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ yarn install Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

Π‘ npm Ρƒ мСня Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ случаСв, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ»ΠΈΡΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΈ случаи ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹Ρ… зависимостСй, пСрСводящих вСрсии Π² вСрсии с критичСскими измСнСниями ΠΈΠ»ΠΈ просто Π½Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° semver. Π― надСялся, Ρ‡Ρ‚ΠΎ yarn Ρ€Π΅ΡˆΠΈΡ‚ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ Ссли Π²Ρ‹Π²ΠΎΠ΄ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ yarn install --pure-lockfile Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π° 100% ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ построСн, Ρ‚ΠΎΠ³Π΄Π° это Π½Π΅ Ρ‚Π°ΠΊ. Π΄Π΅Π»ΠΎ.

Другая Ρ€ΠΎΠ»ΡŒ диспСтчСра ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² - это прСдоставлСниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ контроля Π½Π°Π΄ своими зависимостями. Если ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ сдСлан чистым, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° yarn outdated Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ вСрсии, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ примСчания ΠΊ измСнСниям, избСгая Π»ΡŽΠ±Ρ‹Ρ… критичСских ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π΄Π°Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вСрсии Π² Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ сроки выпуска, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ git commit -a Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ случайных ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π― согласСн со всСм, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΠ»ΠΈ нас, ΠΏΡ€Π΅Ρ€Π²Π°Π² сборку послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ yarn Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π½Π΅ΠΉ. Π― чСстно ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ --pure-lockfile Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ послС прочтСния большСй части Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Π΅ΠΌ это Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ npm с тСрмоусадочной ΠΏΠ»Π΅Π½ΠΊΠΎΠΉ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, сдСлайтС Π΄Π΅Ρ„ΠΎΠ»Ρ‚ :)

@ide ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС сцСнарий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ npm ΠΈ обновляСт package.json , ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ yarn.lock ?

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡƒ измСнСнию Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ? Π­Ρ‚ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ второстСпСнным, трСбуя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ обновлСния Π±Ρ‹Π»ΠΈ явными, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ большиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ приводят ΠΊ Π΅Π³ΠΎ обновлСнию ΠΈ Ρ‚. Π”.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ: наша сборка содСрТит coffeescript ΠΈΠ· Github Π² качСствС подзависимости. coffeescript ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ yarn.lock Π² нашСм процСссС сборки, запустив всСго yarn install :

diff --git a/foo/yarn.lock b/foo/yarn.lock
index ec667fa..bb1f6ae 100644
--- a/foo/yarn.lock
+++ b/foo/yarn.lock
@@ -930,9 +930,9 @@ code-point-at@^1.0.0:
   version "1.6.3"
   resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.6.3.tgz#6355d32cf1b04cdff6b484e5e711782b2f0c39be"

-"coffee-script<strong i="8">@github</strong>:jashkenas/coffeescript":
+coffee-script@jashkenas/coffeescript:
   version "1.11.1"
-  resolved "https://codeload.github.com/jashkenas/coffeescript/tar.gz/887052de079b2f0af9f080031a00bb7544eaca08"
+  resolved "https://codeload.github.com/jashkenas/coffeescript/tar.gz/0d132318ce8f7116a436d97db1f2a5c8b1dedf28"

 [email protected]:
   version "0.3.0"

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡƒ измСнСнию Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ? Π­Ρ‚ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ второстСпСнным, трСбуя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ обновлСния Π±Ρ‹Π»ΠΈ явными, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ большиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ приводят ΠΊ Π΅Π³ΠΎ обновлСнию ΠΈ Ρ‚. Π”.

Π― Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽ yarn install ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая создаСт для мСня node_modules.
Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎ yarn add ΠΈ yarn remove ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ package.json, yarn.lock ΠΈ cleanup node_modules.
Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ add ΠΈ remove я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ install 100 Ρ€Π°Π· Ρ‡Π°Ρ‰Π΅, особСнно Π² CI, Π³Π΄Π΅ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ оТидаю появлСния ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠΎΠ³Π΄Π° я Π½Π΅ оТидаю, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ измСнится:

  1. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Yarn 0.15.0, ΠΌΠΎΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Yarn 0.16.0.
    ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 0.16.0 добавлял ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ записями Π² yarn.lock ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ yarn install ΠΏΡ€ΠΎΡ‚ΠΈΠ² yarn.lock, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сгСнСрирован ΠΌΠΎΠΈΠΌΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Π°ΠΌΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» yarn.lock, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
    Наоборот.
  2. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠΈ инструмСнты сборки зависят ΠΎΡ‚ yarn.lock ΠΊΠ°ΠΊ «источника истины» состояния node_modules. Если ΠΎΠ½ измСнится Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ, я ΠΏΠΎΠ»ΡƒΡ‡Ρƒ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ Π² ΠΌΠΎΠΈΡ… сборках

@kittens

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ чистый, люди Π·Π°Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС сцСнарий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ npm ΠΈ обновляСт package.json, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ yarn.lock?

Если ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ yarn install Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ yarn.lock , Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ошибкой, Ссли yarn.lock Π½Π΅ синхронизируСтся с package.json Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ yarn install --save-lockfile Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для восстановлСния синхронизации.

Установка +1 пряТи Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ yarn.lock

  1. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ - это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ oss. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ участники ΠΌΠΎΠ³Π»ΠΈ пряТу ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ _Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅_ вСрсии. Π£ нас Π΅ΡΡ‚ΡŒ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ npm ΠΈ говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ломаСтся ΠΈΠ·-Π·Π° Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… свойств. ΠŸΡ€ΠΈ установкС пряТи участники пряТи ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с измСнСниями Π·Π°ΠΌΠΊΠ° пряТи.

МСня Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ greenkeeper Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ deps, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π― Ρ…ΠΎΡ‡Ρƒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… мыслСй ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ. @kittens ΠΈ я ΠΎΠ±Π° Π΄ΡƒΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ --pure-lockfile Π΄ΠΎΠ»ΠΆΠ½ΠΎ _Π½Π΅_ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

ВсС начинаСтся с Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ люди Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ / ΡƒΠ΄Π°Π»ΡΡŽΡ‚ / ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ зависимости. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для этого Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ package.json Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ инструмСнта, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Lerna .

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ package.json ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π² Yarn, Ρ‚Π°ΠΊ ΠΈ Π² npm Ρ‚Π°ΠΊΠΎΠ²ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС Π΄Ρ€ΡƒΠ³ΠΎΠΉ установки ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ _syncs_ с package.json . Π’ этом смыслС yarn install ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π² yarn sync .

Π§Ρ‚ΠΎ касаСтся синхронизации, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запускаСтС установку с Π½ΠΎΠ²Ρ‹ΠΌΠΈ зависимостями, Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ node_modules ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ эти измСнСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ yarn.lock дСйствуСт ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ node_modules Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’Π°Ρˆ package.json - это ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ источник истины, это ваш интСрфСйс для yarn, ваша конфигурация ΠΈ СдинствСнноС, ΠΎ Ρ‡Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ. Π’ идСальном ΠΌΠΈΡ€Π΅ Π²Ρ‹ просто Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ свои yarn.lock ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° большС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ± этом Π΄ΡƒΠΌΠ°Ρ‚ΡŒ.


ΠšΡΡ‚Π°Ρ‚ΠΈ, я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ здСсь обсуТдаСтся.

ИспользованиС --pure-lockfile ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Yarn Π½Π΅ Π΄Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π’ΠΎΡ‚ ΠΆΠ΅ package.json ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ yarn.lock Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ node_modules 100% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Когда Π²Ρ‹ обновляСтС package.json обновляСтся ваш yarn.lock Ρ„Π°ΠΉΠ», Π° Π·Π°Ρ‚Π΅ΠΌ обновляСтся node_modules . Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ СстСствСнный порядок Π²Π΅Ρ‰Π΅ΠΉ, ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ


Π§Ρ‚ΠΎ касаСтся возмоТности CI ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ зависимости, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ свой package.json Π½ΠΎ Π½Π΅ запустили yarn install для синхронизации всСго, Ρ‡Ρ‚ΠΎ, я ΡƒΠ²Π΅Ρ€Π΅Π½, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅Ρ‚ (хотя я Π½Π΅ Π²ΠΈΠΆΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°) - я ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ инструмСнтами CI ΠΎΠ± ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Yarn, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ --pure-lockfile ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли люди видят Π² этом Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.


Если Π±Ρ‹ ΠΌΡ‹ сдСлали это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π±Ρ‹ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡Π°Ρ‰Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ влияниС ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ зависимостСй. По ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я пСрСчислил, я Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ этот вопрос.

@thejameskyle Π― Π±Ρ‹Π» Π±Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½, Ссли Π±Ρ‹ Π²Ρ‹ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ прояснили:

  1. Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΅ΡΡ‚ΡŒ package.json ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ "foo": "^1.0.0"
  2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ запускаСт yarn install . ΠŸΠ°ΠΊΠ΅Ρ‚ foo Π² настоящСС врСмя ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ 1.0.0 , поэтому ΠΎΠ½ создаСт Ρ„Π°ΠΉΠ» yarn.lock ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ блокируСтся Π² [email protected]
  3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ добавляСт Π² Git yarn.lock .
  4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ запускаСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты Π½Π° своСй локальной ΠΊΠΎΠΏΠΈΠΈ Ρ€Π΅ΠΏΠΎ, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.
  5. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ отправляСт своС Ρ€Π΅ΠΏΠΎ Π² CI (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Travis).
  6. CI запускаСт yarn install , Π½ΠΎ foo Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ вСрсии 1.1.0 , поэтому Yarn устанавливаСт [email protected] ΠΈ пСрСзаписываСт yarn.lock Π½ΠΎΠ²ΠΎΠΉ вСрсиСй foo
  7. CI ломаСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ foo ΠΈΠΌΠ΅Π΅Ρ‚ критичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² вСрсии 1.1.0

Π’ΠΎΡ‚ похоТая ситуация:

  1. Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΅ΡΡ‚ΡŒ package.json ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ "foo": "^1.0.0" , которая Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ [email protected] , Π° yarn.lock сохраняСтся Π² Git.
  2. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с локальной ΠΊΠΎΠΏΠΈΠ΅ΠΉ рСпозитория Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
  3. Участник ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΏΠΎ с Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ + ΠΏΡƒΠ»-рСквСст.
  4. Когда участник запускаСт yarn install ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ [email protected] которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ yarn.lock .
  5. Π’Π΅ΠΏΠ΅Ρ€ΡŒ сборка участника Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ foo ΠΈΠΌΠ΅Π΅Ρ‚ критичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² вСрсии 1.1.0

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚Π΅ ситуации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСспокоят Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй.

Π˜Ρ‚Π°ΠΊ, Ссли Π±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ yarn install Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ пСрСчислСнных Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, я Π΄ΡƒΠΌΠ°ΡŽ, это устранило Π±Ρ‹ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π°ΡˆΠΈΡ… опасСний. : +1:

Ни ΠΎΠ΄Π½Π° ΠΈΠ· этих ситуаций Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ обновилась, Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ внСсли измСнСния Π² свой package.json .

Π― просто ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ каТСтся, Ρ‡Ρ‚ΠΎ это СдинствСнноС, Ρ‡Ρ‚ΠΎ бСспокоит людСй, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ сказал, Π½Π΅ являСтся Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ сцСнариСм. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, вСроятно, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ.

Но Ρƒ Π½Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ссли Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ устанавливаСтся ΠΈΠ· github, ΠΊΠ°ΠΊ я сообщал Π²Ρ‹ΡˆΠ΅.

@adamchainz Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для фиксации

Ни ΠΎΠ΄Π½Π° ΠΈΠ· этих ситуаций Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ обновилась, Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ внСсли измСнСния Π² свой package.json .

@thejameskyle : Π― Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π½Π΅ настоящий сцСнарий. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ memoize, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ…ΠΎΠ΄ΠΎΠΌ являСтся package.json Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ - yarn.lock .

  1. Π’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ package.json ΠΎΠ½ создаСт yarn.lock ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
  2. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запуститС _that same_ package.json Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½.
  3. Когда Π²Ρ‹ мСняСтС package.json Π²Ρ‹ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ кСш, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ yarn.lock Π±ΡƒΠ΄Π΅Ρ‚ пСрСсчитан.

БСйчас ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ # 3 ΠΈ вмСсто этого обращаСмся с yarn.lock ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ·Π½Π°Π½ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ package.json . Π§Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ странно для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ memoize ΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ странным ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ для Yarn.

Π§Ρ‚ΠΎ происходит с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π½ΠΎΠ²Ρ‹Ρ… вСрсий _Π΄ΠΎΠ»ΠΆΠ½ΠΎ_ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния (Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ошибка с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ git, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ это Π½Π΅ связано с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ).

Π­Ρ‚ΠΎ слоТнСС, Ρ‡Π΅ΠΌ я сСбС прСдставлял (каТдая вСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π° эффСктивно «запоминаСтся» ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅), Π½ΠΎ, надСюсь, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всС ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΡΡƒΡ‚ΡŒ.

@thejameskyle : Для ясности (ΠΈ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²Π°) допустим, Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Ρ„Π°ΠΉΠ»ΠΎΠΌ yarn.lock , ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ срываСт Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π‘Π΅Π· запуска yarn install ΠΈΠ»ΠΈ npm install этот Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ добавляСт Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ package.json Π° Π·Π°Ρ‚Π΅ΠΌ запускаСт yarn install . Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Π² этом случаС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» yarn.lock ?

Π—Π΄Π΅ΡΡŒ происходит ΠΊΡƒΡ‡Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π³Π°Π΄Π°Ρ‚ΡŒ (Π±Π΅Π· ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€Π°).

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, люди Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈ ряд Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΡΡ‡ΠΈΡ‚Π°ΡŽ бСсспорными (ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вносят Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ошибок повСдСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я скоро Π΄ΠΎΠ±Π΅Ρ€ΡƒΡΡŒ).

Из исходного ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΎΠ± ошибкС.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ тСряСтся, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ измСняСтся Π² зависимости ΠΎΡ‚ срСды (установлСнная Π² настоящСС врСмя вСрсия yarn).
КакоС оТидаСмоС повСдСниС?
НС ΠΏΠΈΡˆΠΈΡ‚Π΅ yarn.lock ΠΈΠ»ΠΈ package.json ΠΏΡ€ΠΈ установкС пряТи.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ yarn.lock, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ yarn upgrade

Π’ΠΎΡ‡Π½Π΅Π΅, оТидаСмая сСмантика, Π½Π° ΠΌΠΎΠΉ взгляд, Ρ‚Π°ΠΊΠΎΠ²Π°:

  • Ссли package.json Π½Π΅ измСнилось с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго измСнСния yarn.lock , yarn.lock являСтся источником истины ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ обновлСнию.
  • Ссли package.json измСнилось с послСднСго Ρ€Π°Π·Π°, yarn.lock измСнилось, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ yarn.lock Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ удовлСтворяло package.json ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ node_modules .
  • Ссли yarn update Π·Π°ΠΏΡƒΡ‰Π΅Π½, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ всС зависимости ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ всСго, Ρ‡Ρ‚ΠΎ удовлСтворяСт package.json .

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

Если это Π½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пряТи, я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ошибка.


@esphen написал:

Π― согласСн. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ yarn install ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ записываСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ всСй ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ссли ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ вСрсии?

Π― Π΄ΡƒΠΌΠ°ΡŽ, это пытаСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ yarn Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ссли ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ всС Π΅Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½. Π― согласСн с этим.

Π― согласСн с ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ @bestander , Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ / ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ / ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ.

Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ package.json Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ yarn.lock . На ΠΌΠΎΠΉ взгляд, Ссли ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ package.json Π½Π΅ удовлСтворяСт yarn.lock , ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ yarn.lock .

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

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ пряТи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ package.json . РСгистрируя Π΅Π³ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ участники, CI ΠΈ производствСнный ΠΊΠΎΠ΄ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ вСрсии.


@Guuz сказал:

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ я это понимаю:
yarn устанавливаСт всС зависимости, Π° Ρ‚Π°ΠΊΠΆΠ΅ измСняСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. На сСрвСрС CI Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ yarn install --pure-lockfile?

Π­Ρ‚ΠΎΡ‚ вопрос пСрСкликаСтся с ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, высказанных Π² этой Ρ‚Π΅ΠΌΠ΅.

Cargo ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„Π»Π°Π³ --locked ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: «Если package.json Π½Π΅ удовлСтворяСт yarn.lock , это ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ошибка». Π£ Bundler Π΅ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π»Π°Π³ ( --frozen ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° Heroku принял Bundler, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ людям ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΎΠ½ΠΈ внСсли Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² свои Gemfile ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Gemfile.lock .

ИдСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя вашСй Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² package.json ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ пряТу, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ, Ρ‡Ρ‚ΠΎ yarn.lock остаСтся синхронизированным (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ вСрсии Π² package.json всСгда соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅).

Но ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ практичСски всСгда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка расхоТдСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ внСсли измСнСния Π² package.json , Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ yarn ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ yarn.lock . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вСрсии Π² вашСм package.json Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ фактичСским вСрсиям, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΈ запускС прилоТСния , Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ сказали, Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ пряТи.


@esphen сказал:

На ΠΌΠΎΠΉ взгляд, ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ выполняСт ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², - максимально ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΎΡΡ‚Π°Ρ установка пряТи Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это бСсспорно.

Π‘ npm Ρƒ мСня Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ случаСв, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ»ΠΈΡΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΈΡ… машинС. Π­Ρ‚ΠΈ случаи ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹Ρ… зависимостСй, пСрСводящих вСрсии Π² вСрсии с критичСскими измСнСниями ΠΈΠ»ΠΈ просто Π½Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° semver. Π― надСялся, Ρ‡Ρ‚ΠΎ yarn Ρ€Π΅ΡˆΠΈΡ‚ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ Ссли Π²Ρ‹Π²ΠΎΠ΄ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ yarn install --pure-lockfile, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π° 100% ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ построСн, Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ.

Запуск yarn install --pure-lockfile Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ, Π΄Π°ΠΆΠ΅ Ссли вСрсии Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ с вСрсиями, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² package.json . Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свои yarn.lock послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² package.json .

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

Если package.json Π½Π΅ измСнилось, Π½Π° ΠΌΠΎΠΉ взгляд, это ошибка, Ссли yarn.lock обновляСтся. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄ΠΈΠ½ случай ошибки ΡƒΠΊΠ°Π·Π°Π½ Π² исходном ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅:

lockfile измСняСтся Π² зависимости ΠΎΡ‚ срСды (установлСнная Π² настоящСС врСмя вСрсия yarn).

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ошибка, ΠΈ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

ПозТС Π² Ρ‚Π΅ΠΌΠ΅ @thejameskyle сказал:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ memoize, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ…ΠΎΠ΄ΠΎΠΌ являСтся package.json, Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ - yarn.lock.

На ΠΌΠΎΠΉ взгляд, это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π° ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ модСль (Β« yarn.lock ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° измСнилось package.json Β»), ΠΈ Ссли абстракция просочится, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.


@adamchainz сказал:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ: наша сборка содСрТит coffeescript ΠΈΠ· Github Π² качСствС подзависимости. coffeescript ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ yarn.lock Π² нашСм процСссС сборки, запустив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ yarn install

ΠΈ ΠΏΠΎΠ·ΠΆΠ΅:

Но Ρƒ Π½Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ссли Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ устанавливаСтся ΠΈΠ· github, ΠΊΠ°ΠΊ я сообщал Π²Ρ‹ΡˆΠ΅.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ yarn Π½Π΅ рассматриваСт git sha ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсии зависимостСй git. Π£ Cargo ΠΈ Bundler Π΅ΡΡ‚ΡŒ концСпция Β«Ρ‚ΠΎΡ‡Π½ΠΎΠΉΒ» вСрсии, которая сСриализуСтся Π² Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ; для источников git "Ρ‚ΠΎΡ‡Π½ΠΎΠΉ" вСрсиСй являСтся SHA. Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΎΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго лишь package.json ΠΈ yarn.lock ΠΈ запускаСтС yarn , вся информация, нСобходимая для получСния ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½.

Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ я пропустил это взаимодСйствиС ΠΏΡ€ΠΈ просмотрС исходного ΠΊΠΎΠ΄Π° git; Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ отслСТиваниС SHA, Π½ΠΎ yarn install Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π³ΠΈΠ΄Ρ€Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ зависимостСй Π΅Π³ΠΎ ΡƒΠ²Π°ΠΆΠ°Π΅Ρ‚.


TL; DR

Π― согласСн с @thejameskyle ΠΈ @kittens, Ρ‡Ρ‚ΠΎ yarn.lock слСдуСт ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с package.json автоматичСски, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСрсии, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΈΡ… package.json ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈΡ… прилоТСния.

Однако, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π΅ΡΡ‚ΡŒ нСсколько ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ‚ΠΎΠΊ Π² yarn.lock Π΄Π°ΠΆΠ΅ Ссли package.json Π½Π΅ измСнился:

  • ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии пряТи Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… обновляСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ
  • зависимости git ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Π΄Π°ΠΆΠ΅ Ссли package.json Π½Π΅ обновляСтся, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‚Π΅ΠΌ обновляСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Ρ„Π»Π°Π³Π° Cargo --locked , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² CI для быстрого сбоя сборки, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ обновляСт package.json ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ yarn.lock .

@thejameskyle Бпасибо! : heart: Π― согласСн с Π²Π°ΠΌΠΈ ΠΈ @kittens, Ρ‡Ρ‚ΠΎ yarn.lock слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ послС измСнСния package.json

@wycats Как --locked (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ). ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ выпуск ΠΎΠ± этом.

Π‘Π΄Π΅Π»Π°Π½ΠΎ # 1568 для отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Git SHA

@wycats , спасибо Π·Π° Ρ€Π°Π·Π³Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΎΡ‡Π΅Π½ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€!

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

ИмСнно ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ этот вопрос.
Π£ нас Π΅ΡΡ‚ΡŒ нСсколько Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… вСрсий Yarn, ΠΈ я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π² нашСм ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ ΠΌΡ‹ смоТСм Π΄Π΅Π»Π°Ρ‚ΡŒ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ обновлСния ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ.
Π‘Π±ΠΎΡ€ΠΊΠΈ Π½Π° основС пряТи 0.13, 0.14 ΠΈ 0.15 внСсли нСбольшиС измСнСния Π² Ρ„Π°ΠΉΠ»Ρ‹ yarn.lock, хотя package.json Π±Ρ‹Π» синхронизирован.
Π­Ρ‚ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΎ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сборки Buck замСдлились, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ измСнСния Π² исходном Π΄Π΅Ρ€Π΅Π²Π΅ сдСлали кСши Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.
Π­Ρ‚ΠΎ заставило мСня ΠΈ ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСсколько часов.

@thejameskyle , спасибо, Ρ‡Ρ‚ΠΎ подСлились своим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ.
Π― Π½Π΅ считал, Ρ‡Ρ‚ΠΎ сцСнарий package.json Π½Π΅ синхронизирован с yarn.lock, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ справСдливым. И Ρƒ вас Π΅ΡΡ‚ΡŒ вСская Ρ‚ΠΎΡ‡ΠΊΠ° зрСния.

Однако, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π» @wycats , исходный ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎΠ± ошибкС дСйствитСлСн.
Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… сборок, ΠΈ я снова ΠΎΡ‚ΠΊΡ€ΠΎΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ всС заинтСрСсованныС стороны.

@wycats

Π’ΠΎΡ‡Π½Π΅Π΅, оТидаСмая сСмантика, Π½Π° ΠΌΠΎΠΉ взгляд, Ρ‚Π°ΠΊΠΎΠ²Π°:

  • Ссли package.json Π½Π΅ измСнилось с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго измСнСния yarn.lock , yarn.lock являСтся источником истины ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ обновлСнию.
  • Ссли package.json измСнилось с послСднСго Ρ€Π°Π·Π°, yarn.lock измСнилось, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ yarn.lock Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ удовлСтворяло package.json ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ node_modules .
  • Ссли yarn update Π·Π°ΠΏΡƒΡ‰Π΅Π½, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ всС зависимости ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ всСго, Ρ‡Ρ‚ΠΎ удовлСтворяСт package.json .

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

ΠœΡ‹ слСдуСм этой сСмантикС, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² β„– 364.

@bestander Π’Ρ‹ участвовали Π² PR (# 364), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту эвристику. КакиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π²Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚Π΅?

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ --pure-lockfile Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ эвристикС, описанной @wycats. Если эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ оставлСна ​​открытой, Ρ‚ΠΎΠ³Π΄Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.

@kittens Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, я
Или, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΌΠ½Π΅ слСдуСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ, связанный с установкой измСнСния Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° package.json Π½Π΅ измСнился

МоТСм Π»ΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ выпуску? Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ здСсь ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Ρ…ΠΈΠ²Π°.

Π—Π²ΡƒΡ‡ΠΈΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, @thejameskyle , сСгодня я создам Π½ΠΎΠ²Ρ‹ΠΉ выпуск ΠΈ добавлю сюда ссылку

Π‘ΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ тСматичСский выпуск https://github.com/yarnpkg/yarn/issues/1576

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ yarn install Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, Ссли ΠΏΠ°ΠΊΠ΅Ρ‚ Π² package.json Π½Π΅ находится Π² yarn.lock, Ρ‚.Π΅. сбой, Ссли ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½

ДобавляСм пояснСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ послС прочтСния Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ для мСня Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ:

tldr; НСсвязанныС измСнСния Π² package.json Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ обновлСнию ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄ΠΎ послСднСй вСрсии, совмСстимой с Π΅Π³ΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ сСмвСром package.json .

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΎΠΊ, это Π·Π²ΡƒΡ‡Π°Π»ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ yarn.lock Π±Ρ‹Π»ΠΎ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΎ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π½Π° Ρ…Π΅Ρˆ-ΠΊΠΎΠ΄Π΅ package.json , ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π·Π²ΡƒΡ‡Π°Π»ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ yarn.lock Π±ΡƒΠ΄Π΅Ρ‚ записано Π² (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ / кСш Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ ) ΠΏΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ package.json , Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нСсвязанноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ "description" ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ зависимости) ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ обновлСнию вСрсии этой зависимости yarn.lock Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ новая вСрсия Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ package.json semver.

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

НапримСр,

  • Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ yarn add lodash@^4.17.1 installs [email protected]
  • ПозТС доступСн [email protected] .
  • yarn ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ установку [email protected]
  • Если / Пока вСрсия lodash Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π² package.json (ΠΈΠ»ΠΈ yarn add / upgrade / remove запускаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для lodash).

ΠŸΠ°Π½ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ сухари # 1576

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ внСсти свой Π²ΠΊΠ»Π°Π΄ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ нСбольшими ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ этой, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ для сообщСства.
Основная ΠΊΠΎΠΌΠ°Π½Π΄Π° занята исправлСниСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ ΠΌΡ‹ ΠΆΠ΄Π΅ΠΌ ΠΈ привСтствуСм, Ссли сообщСство ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

@CrabDude, спасибо, Ρ‡Ρ‚ΠΎ подСлились своим Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ.

Π’Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ - Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ - Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ lodash ΠΈ Π΅Π³ΠΎ собствСнныС зависимости Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ свои вСрсии Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² yarn.lock ? Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°ΠΆΠ΅ Ссли Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ зависимости ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ новая вСрсия Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ?

Или Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: допустим, yarn.lock сильно устарСл, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ запускаСт yarn add Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² package.json. Π‘ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² yarn.lock ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ останутся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ?

@rarkins

Π’Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ - Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ - Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ lodash ΠΈ Π΅Π³ΠΎ собствСнныС зависимости Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ свои вСрсии Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² yarn.lock?

Π΄Π°. Π­Ρ‚ΠΎ подтвСрТдаСтся ΠΌΠΎΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

Π‘ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² yarn.lock ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ останутся Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅?

Казалось Π±Ρ‹, Π½Π΅ lodash Π΄Π΅Ρ€Π΅Π²ΡŒΡ зависимостСй / записи Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹; Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ зависимости lodash .

Π‘ ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, всС это ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ.

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅ : Π― люблю пряТу. Но мСня это Π±Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ расстраиваСт.

Π’ ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ yarn install постоянно мСняСт Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… (Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ вСрсия), нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ мСнял package.json . И ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ, ΠΌΡ‹ обновляСм, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ yarn add . Π­Ρ‚ΠΎ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ CI провСряСт, Ρ‡Ρ‚ΠΎ статус git являСтся чистым послС сборки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π·Π°Π±Ρ‹Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈ ΠΎΠ½ часто мСняСтся.

Π― ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ пряТа обСспСчит ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ node_modules Π½Π° всСх ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… _ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ_. НС с лишними Ρ„Π»Π°ΠΆΠΊΠ°ΠΌΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π°ΠΆΠ½Π΅Π΅ удобства. Если ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° Π±Ρ‹Π»Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ, я ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ npm Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Когда Ρ„Π°ΠΉΠ» измСняСтся, это для мСня сигнал ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ измСнилось, ΠΈ я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

Вопросов

  • Говорят, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, содСрТимоС node_modules всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ сгСнСрировано? Π― Π½Π΅ Π²Π΅Ρ€ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ, Π½ΠΎ Ссли это Ρ‚Π°ΠΊ, Ρ‚ΠΎ я понимаю ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ Π² этой Ρ‚Π΅ΠΌΠ΅ - это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ пряТа Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Π²ΠΈΠ΄ это Π½Π΅ Ρ‚Π°ΠΊ.
  • ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ package.json Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ создаСтся Π·Π°Π½ΠΎΠ²ΠΎ. Π Π°Π·Π²Π΅ это Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ мноТСство зависимостСй Π² зависимости ΠΎΡ‚ состояния node_modules этого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ программиста? ΠŸΡ€ΡΠΆΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π΅Π»ΡŒΡ‚Ρƒ ΠΈ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (Ссли это Π΅Ρ‰Π΅ Π½Π΅ сдСлано).
  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ yarn add ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ вСрсии Π² package.json с ^ ? ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, я понял, Ρ‡Ρ‚ΠΎ yarn ΠΎΠ±Π΅Ρ‰Π°Π»Π° Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ зависимости.

БвязанныС ошибки

  • Когда случайный ΠΏΠ°ΠΊΠ΅Ρ‚ удаляСтся Π² node_modules , yarn install сообщаСт ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±Π΅Π· пСрСустановки. Когда ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚, ΠΎΠ½ пСрСустанавливаСт ΠΈΡ…. npm Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.
  • Π€Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ ΠΊ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ, Ссли Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ node_modules ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‡ΠΈΡΡ‚ΡƒΡŽ установку (Ρ‡Ρ‚ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ - я оТидаю, Ρ‡Ρ‚ΠΎ ΠΎΠ½ установит ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится Π² Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт)
  • Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π½Π΅ касаясь ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ node_modules послС чистой установки, yarn Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ, ΠΈ ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сильно отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ компилятор ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· создаСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт.

Π’ Ρ†Π΅Π»ΠΎΠΌ, yarn ускоряСт установку, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ Π² своСй основной (Π½Π΅) ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ: постоянноС Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ вСрсий ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. МнС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ удобства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ½Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π½Π° протяТСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ ΡƒΠΌΠ½Ρ‹ ΠΈ Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ хотят ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΠ½ΠΈ прямо ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚.

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ всСляСт увСрСнности ΠΈ доставляСт постоянныС Ρ…Π»ΠΎΠΏΠΎΡ‚Ρ‹. Π― Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Π» прСдупрСТдСния ΠΈ ошибки ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ package.json Π½Π΅ соотвСтствуСт Ρ„Π°ΠΉΠ»Ρƒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ соотвСтствуСт node_modules, Ρ‡Ρ‚ΠΎ заблокированная вСрсия большС Π½Π΅ сущСствуСт ΠΈ Ρ‚. Π”., ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ останавливаСт ΠΌΠΎΠΈ сборки ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΌΠΈ Π½Π° своСм ΠΏΡƒΡ‚ΠΈ, ΠΈ я ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΈΡ… зависимостСй.

@jspiro , спасибо, Ρ‡Ρ‚ΠΎ написали это.
Π—Π΄Π΅ΡΡŒ подняты нСсколько вопросов.
Π›ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ выпуск ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ потСряны Π² коммСнтариях.

Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Yarn?
Начиная с вСрсии 0.18-0.19 ΠΌΡ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² yarn.lock ΠΌΠ΅ΠΆΠ΄Ρƒ машинами.

Вопросов:

Говорят, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, содСрТимоС node_modules всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ сгСнСрировано? Π― Π½Π΅ Π²Π΅Ρ€ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ, Π½ΠΎ Ссли это Ρ‚Π°ΠΊ, Ρ‚ΠΎ я понимаю ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ Π² этой Ρ‚Π΅ΠΌΠ΅ - это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ пряТа Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Π²ΠΈΠ΄ это Π½Π΅ Ρ‚Π°ΠΊ.

Dev ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ зависимости ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.
Но Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ установлСны bing, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², спСцифичных для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, node_modules Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… мСстах.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ package.json Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ создаСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. Π Π°Π·Π²Π΅ это Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ мноТСство зависимостСй Π² зависимости ΠΎΡ‚ состояния node_modules этого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ программиста? ΠŸΡ€ΡΠΆΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π΅Π»ΡŒΡ‚Ρƒ ΠΈ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (Ссли это Π΅Ρ‰Π΅ Π½Π΅ сдСлано).

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ запрос Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ PR Π·Π° это.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ yarn add ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ вСрсии Π² package.json с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ^? ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, я понял, Ρ‡Ρ‚ΠΎ yarn ΠΎΠ±Π΅Ρ‰Π°Π»Π° Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ зависимости.

Π­Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ npm.
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ yarn add [email protected] ΠΈΠ»ΠΈ yarn add is-array --exact для Ρ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсии.
ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ обсуТдСно Π² RFC.

Когда случайный ΠΏΠ°ΠΊΠ΅Ρ‚ удаляСтся Π² node_modules, yarn install сообщаСт ΠΎΠ± успСхС Π±Π΅Π· пСрСустановки. Когда ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚, ΠΎΠ½ пСрСустанавливаСт ΠΈΡ…. npm Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пряТа ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.
Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π½ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ этим, Ρƒ мСня Π΅ΡΡ‚ΡŒ идСя, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.
Однако Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² node_modules, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ установкС.
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ΅Π»ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» node_modules/.yarn-integrity ΠΏΠ΅Ρ€Π΅Π΄ установкой. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.
ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ - Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ yarn install --force , это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ установку, Π½ΠΎ Π² качСствС ΠΏΠΎΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ эффСкта ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅Ρ‚ yarn.lock.

Π€Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ ΠΊ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ, Ссли Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ node_modules ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‡ΠΈΡΡ‚ΡƒΡŽ установку (Ρ‡Ρ‚ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ - я оТидаю, Ρ‡Ρ‚ΠΎ ΠΎΠ½ установит ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится Π² Ρ„Π°ΠΉΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт)

Π”Π°Π²Π½ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Π» этого.
ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΌΠ½Π΅ копию, Ссли это ΠΌΠΎΠΆΠ½ΠΎ воспроизвСсти.

Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π½Π΅ касаясь package ΠΈΠ»ΠΈ node_modules послС чистой установки, yarn восстанавливаСт Π΅Π³ΠΎ, ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ сильно отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ компилятор ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· создаСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт.

Π§Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ вСрсии Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… зависимостСй.
Из-Π·Π° этого структура node_modules ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Π»ΠΎΠ³ΠΈΠΊΠΈ подъСма.
Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ.
ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° import https://github.com/yarnpkg/yarn/pull/2580.
Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ node_modules.

@jspiro , Yarn - это ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, управляСмый сообщСством, ΠΈ ΠΌΡ‹ привСтствуСм ваши ΠΏΠΈΠ°Ρ€Ρ‰ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° вас.

Π•ΡΡ‚ΡŒ Π»ΠΈ шанс ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ хотя Π±Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ?

Π’ настоящСС врСмя ΠΌΡ‹ исправляСм эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ https://github.com/yarnpkg/yarn/issues/3490 , ΠΈΠ½ΠΎΠ³Π΄Π° yarn install ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ являСтся ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΌΡ‹ исправим это.
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚Π΅ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ„Π°ΠΉΠ» yarn.lock Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ вноситС измСнСния Π² package.json Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для --pure-lockfile / - frozen-lockfile Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true Π² .yarnrc, ΠΈ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ установки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

--install.pure-lockfile true

Моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ чистый Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ установлСнных зависимостСй. Π­Ρ‚ΠΎ Π½Π΅ связано с Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ измСнСниями yarn.lock

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ этапами?
ΠœΡ‹ разбСрСмся

МСня это Ρ‚ΠΎΠΆΠ΅ укусило, ΠΊΠΎΠ³Π΄Π° package.json ΠΈ yarn.lock Π²Ρ‹ΡˆΠ»ΠΈ ΠΈΠ· синхронизации ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ ошибкС Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· npm install --save вмСсто yarn add .

Π― Π½Π΅ согласСн с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ pure-lockfile Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽ, Ρ‡Ρ‚ΠΎ frozen-lockfile Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для yarn install .

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ frozen-lockfile Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС, Ссли yarn.lock ΠΈ package.json Π½Π΅ синхронизированы. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, frozen-lockfile ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π° машинС сборки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, jenkins), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ эту сборку, ΠΊΠ°ΠΊ ΠΈ слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ сбой.

Π—Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² package.json / yarn.lock.

К соТалСнию, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ yarn install просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΡΠ°ΠΌΡƒΡŽ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… зависимостСй ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ yarn.lock , которая Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Ρ‹ Π² сборкС ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ скачка вСрсии. ИмСнно ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Однако ΡΡƒΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ:

Волько Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠ°ΠΊ add , remove ΠΈ upgrade Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ yarn.lock .

install Π΄ΠΎΠ»ΠΆΠ΅Π½ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π»ΠΈΠ±ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости Π² ΠΈΡ… Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсии, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, Ссли ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ нСсоотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ package.json ΠΈ yarn.lock . (ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ - Ссли Π²Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅Ρ‚ yarn.lock . Π’ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π°, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ снова.)

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π° машинС сборки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, jenkins), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта сборка Π½Π΅ удастся.

Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ это автоматичСски, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ находимся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ CI?

@BYK Π― Π½Π΅ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сюда. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΌΠ½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ снова?

Π― Π±Ρ‹ сказал ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ☺️

Π― согласСн с @thejameskyle ΠΈ @kittens, Ρ‡Ρ‚ΠΎ yarn.lock Π΄ΠΎΠ»ΠΆΠ΅Π½ автоматичСски ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с package.json.

НС ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ сказано, Π½ΠΎ Π½Π° всякий случай: Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь yarn.lock, ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² package.json измСняСтся. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зависимости Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ package.json. НапримСр, Ссли Π²Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TypeScript, зависимости TypeScript Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²).

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ