Yarn: μƒˆ 쒅속성을 μΆ”κ°€ν•˜λ©΄ ν•΄κ²°μ‹œ κΈ°μ‘΄ 버전 μ œμ•½ 쑰건이 μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 10μ›” 11일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: yarnpkg/yarn

κΈ°λŠ₯ 을 μš”μ²­ν•˜κ±°λ‚˜ 버그λ₯Όλ³΄κ³  ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
κ³€μΆ©.

ν˜„μž¬ 행동은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?
Yarn은 μƒˆλ‘œ μΆ”κ°€ 된 μ’…μ†μ„±μ˜ 쒅속성을 ν•΄κ²°ν•  λ•Œ 이미 μΆ”κ°€ 된 버전 μž κΈˆμ„ λ”°λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ λ™μž‘μ΄ 버그 인 경우 μž¬ν˜„ 단계λ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

  1. 빈 λͺ¨λ“ˆ μ΄ˆκΈ°ν™”
  2. λ°˜μ‘ μΆ”κ°€ 15.6.1 yarn add [email protected]
  3. [email protected] yarn add [email protected]
  4. 버그가 μž¬ν˜„λ˜κ³  두 가지 λ°˜μ‘ 버전이 μ„€μΉ˜λ©λ‹ˆλ‹€.
$ yarn list react
yarn list v1.1.0
β”œβ”€ [email protected]
└─ [email protected]
   └─ [email protected]
✨  Done in 0.24s.

μ˜ˆμƒλ˜λŠ” λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?
λͺ¨λ“  버전 μ œμ•½μ„ μΆ©μ‘± ν•  수 μžˆμœΌλ―€λ‘œ [email protected] 만 μ„€μΉ˜ 될 κ²ƒμœΌλ‘œ μ˜ˆμƒλ©λ‹ˆλ‹€. 두 쒅속성이 λͺ¨λ‘ package.json 및 yarn install μ—μžˆλŠ” ν›„ yarn.lock μ‚­μ œν•˜λ©΄ 이런 일이 λ°œμƒν•©λ‹ˆλ‹€.

$ rm -rf node_modules/ yarn.lock && yarn install && yarn list react
yarn list v1.1.0
└─ [email protected]
✨  Done in 0.17s.

node.js, yarn 및 운영 체제 버전을 μ–ΈκΈ‰ν•˜μ‹­μ‹œμ˜€.

$ node --version
v6.9.4
$ yarn --version
1.2.0
$ system_profiler SPSoftwareDataType|grep "System Version"
      System Version: macOS 10.12.6 (16G29)

νŽΈμ§‘ : μ›λž˜ μž¬ν˜„μ€ yarn v.1.1.0으둜 μˆ˜ν–‰λ˜μ—ˆμ§€λ§Œ 1.2.0으둜 μ—…κ·Έλ ˆμ΄λ“œν–ˆλŠ”λ° μ—¬μ „νžˆ μž¬ν˜„λ©λ‹ˆλ‹€.

cat-bug high-priority triaged

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

였늘 이것을 μ‚΄νŽ΄λ³Ό κ²ƒμž…λ‹ˆλ‹€ πŸ‘

λͺ¨λ“  4 λŒ“κΈ€

λ‚˜λŠ” 이것을 νŒŒν—€ μΉ˜κ³ μžˆλ‹€ ...

PackageResolver.getHighestRangeVersionMatch(name, range, manifest) 전달 된 맀개 λ³€μˆ˜κ°€ μ˜¬λ°”λ₯΄μ§€ μ•Šμ„ 수 μžˆμŒμ„ μ•Œλ¦½λ‹ˆλ‹€. 전달 된 range 은 μš”μ²­ 된 λ²”μœ„ ( ^15.5.4 ) λŒ€μ‹  μ‹€μ œ ν•΄κ²° 된 단일 버전 ( 15.6.2 ) 인 것 κ°™μŠ΅λ‹ˆλ‹€.

그러면 ν˜„μž¬ μ„€μΉ˜λœ 버전이 semver λ²”μœ„μ™€ μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” ν–‰κΉŒμ§€ λΉŒλ“œλ©λ‹ˆλ‹€. semver.maxSatisfying(["15.6.1"], '15.6.2'); // null μ˜¬λ°”λ₯Έ λ²”μœ„κ°€ μ „λ‹¬λ˜λ©΄ semver.maxSatisfying(["15.6.1"], '^15.5.4'); // 15.6.1 μ‹€ν–‰λ˜μ–΄μ•Όν•©λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜μ‹­μ‹œμ˜€.

κ³„μ†ν•΄μ„œ μ½”λ“œλ₯Ό μ—­ μΆ”μ ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ’‹μŠ΅λ‹ˆλ‹€. 이것은 # 3729에 μ˜ν•΄ 특히 package-request.js μžˆλŠ” 쀄에 μ˜ν•΄ λ„μž… 된 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

const solvedRange = semver.validRange(range) ? info.version : range;

λ”°λΌμ„œ λ²”μœ„ ( ^15.5.4 )κ°€ μœ νš¨ν•˜λ©΄ λŒ€μ‹  info.version μ‚¬μš©ν•©λ‹ˆλ‹€ ( 15.6.2 ).
μ„€μΉ˜λœ 버전이 15.6.2 와 μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μ „λ‹¬λ©λ‹ˆλ‹€.

const maxValidRange = semver.maxSatisfying(['15.6.1'], '15.6.2'); // null

@arcanis μ—°κ²°λœ PR이 κ·€ν•˜μ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 무엇이든 λ³€κ²½ν•˜λŠ” 것을 망섀이고 PR이 μˆ˜μ • ν•œ 것을 λ‹€μ‹œ μ—΄ μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€. 손 μ’€ 빌렀주 μ‹œκ² μ–΄μš”?

였늘 이것을 μ‚΄νŽ΄λ³Ό κ²ƒμž…λ‹ˆλ‹€ πŸ‘

Sooo, 고쳐 보자! ν•˜μ§€λ§Œ, μš°λ¦¬κ°€ 덜 효율적이 될 μˆ˜μžˆλŠ” 것보닀 λ§Œλ“œλŠ” 큰 쀑 ν•˜λ‚˜ μ•„λ‹ˆλ‹€ - λ‚˜λŠ”ν•˜μ§€ κ·Έ νŒ¨ν‚€μ§€ (μš°λ¦¬λŠ”μ΄ 문제λ₯Ό ν•΄κ²°ν•˜λ”λΌλ„, 그듀은 λ‚˜μ€‘μ— λ‹€μ‹œ μ€‘λ‹¨λ©λ‹ˆλ‹€ λ‚΄ 말을 ν‘œμ‹œ) κΆŒμƒμ— μ˜μ‘΄ν•˜κ³  μ’‹μ•„ν•œλ‹€. λ‚΄κ°€ # 5561에 올린 것을 λ‹€μ‹œ κ²Œμ‹œ :

μœ„μ˜ 논리λ₯Ό μ •λ§λ‘œ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€. λ²”μœ„κ°€ μœ νš¨ν•œ semver이면 μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

당신은 λ§Žμ€ μ΄ν•΄κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ λ§žμ•„μš”μ€ / λ‚΄κ°€ν•˜κ³  μ‹Άμ—ˆλ˜ 것을 μƒκ°μ΄μ—ˆλ‹€ "이 버전이 μ•„λ‹ˆλΌ λ²”μœ„μ˜ 경우, μš°λ¦¬λŠ” 이미 κ°€λŠ₯ν•˜λ©΄ κ°€μ§€κ³ μžˆλŠ” ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€"λͺ©ν‘œ λ•Œλ¬Έμ— ( PR의 잠금 νŒŒμΌμ—μ„œ 읽을 λ•Œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€). λ”°λΌμ„œ 쑰건은 λ‹€μŒκ³Ό κ°™μ•„μ•Όν•©λ‹ˆλ‹€.

const solvedRange = semver.valid(range) && !semver.validRange(range) ? range : info.version;
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰