Yarn: Yarn은 NPMκ³Ό 같은 μ•ˆμ •μ μΈ μ΅œμ‹  일치 λŒ€μ‹  μΌμΉ˜ν•˜λŠ” @next/λΆˆμ•ˆμ •ν•œ 버전을 μ‚¬μš©ν•©λ‹ˆλ‹€.

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

κΈ°λŠ₯ 을 μš”μ²­ν•˜κ±°λ‚˜ 버그λ₯Ό 보고 ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
버그 🐜 😱 Yarn은 λ™μΌν•œ 버전 μ§€μ •μžλ₯Ό μ‚¬μš©ν•˜μ—¬ NPMκ³Ό λ‹€λ₯Έ 버전을 μ„ νƒν•©λ‹ˆλ‹€.

ν˜„μž¬ 행동은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

  • aes-decrypter νŒ¨ν‚€μ§€λŠ” npm에 μžˆμŠ΅λ‹ˆλ‹€: { latest: '1.0.3', beta: '1.0.0-0', next: '1.1.0' }
  • video.js νŒ¨ν‚€μ§€λŠ” npm에 μžˆμŠ΅λ‹ˆλ‹€: { latest: '5.11.9', next: '5.12.6', alpha: '5.9.0-2' }
  • νŒ¨ν‚€μ§€ videojs-contrib-hls λŠ” aes-decrypter@^1.0.3' 및 video.js@^5.10.1 따라 λ‹€λ¦…λ‹ˆλ‹€.
  • λ‚΄ νŒ¨ν‚€μ§€λŠ” package.json videojs-contrib-hls@^3.6.7 에 따라 λ‹€λ¦…λ‹ˆλ‹€.
{
  "name": "yarn-next-bug-test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "videojs-contrib-hls": "^3.6.7"
  }
}
  • μ‹€ μ—†μŒ.잠금
  • yarn

μ„€μΉ˜λ˜κ³  yarn.lock에 μΆ”κ°€λœ νŒ¨ν‚€μ§€λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • [email protected] (
  • λ™μ˜μƒ. [email protected] (잘λͺ»λ¨, 5.11.9이어야 함, μ•ˆμ •μ μΈ μ΅œμ‹  일치 버전)
  • [email protected] (잘λͺ»λ¨, 1.0.3이어야 함, μ•ˆμ •μ μΈ μ΅œμ‹  일치 버전)

μ˜ˆμƒλ˜λŠ” λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?
이 λ™μΌν•œ package.json으둜 NPM이 μˆ˜ν–‰ν•˜λŠ” μž‘μ—…:

node.js, 원사 및 운영 체제 버전을 μ–ΈκΈ‰ν•˜μ‹­μ‹œμ˜€.
node.js v7.0.0
원사 v0.16.0 및 v0.19.0-0(f0d875a67a06d8b2405be177d0c43820442d802b의 λ§ˆμŠ€ν„°)에 버그가 μžˆμŠ΅λ‹ˆλ‹€.
npm v3.10.9 및 v4.0.2 λͺ¨λ‘ μ˜ˆμƒν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
macOS μ‹œμ—λΌ 10.12.2 베타(16C32f)

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

원사λ₯Ό 톡해 nightmare λ₯Ό μ„€μΉ˜ν•  λ•Œ 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. μ•…λͺ½μ€ npm의 beta dist-tag μ•„λž˜μ— μžˆλŠ” 1.6.0 ν•΄μ„λ˜λŠ” electron@^1.4.4 에 따라 λ‹€λ¦…λ‹ˆλ‹€. κ°€μž₯ μ΅œμ‹  버전은 1.4.15 μž…λ‹ˆλ‹€. λ‚˜λ„ λͺ¨λ₯΄κ²Œ μ „μžμ˜ 베타 버전에 λŒ€ν•΄ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. 이제 ν”„λ‘œλ•μ…˜μ—μ„œ μ‹€ν–‰ν•˜λ €λ©΄ λ‹€μš΄κ·Έλ ˆμ΄λ“œν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ‚΄ ν•΄κ²° 방법은 package.json λ³„λ„λ‘œ μ›ν•˜λŠ” electron 버전을 λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

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

λ‚˜λŠ” 같은 일에 λΆ€λ”ͺμ³€λ‹€. 이것은 NpmResolve#findVersionInRegistryResponse μ—μ„œ 잘λͺ»λœ 것 κ°™μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ range λŠ” 전이 μ’…μ†μ„±μ˜ 경우 dist-tags 의 ν‚€κ°€ μ•„λ‹ˆλΌ λ‹¨μˆœνžˆ semver λ²”μœ„μ΄κ³  config.resolveConstraint λŠ” λ‹¨μˆœνžˆ λ°˜ν™˜λ©λ‹ˆλ‹€. κ°€μž₯ 높은 것.
(μž¬ν•΄ 곡격의 쒋은 μ˜ˆλŠ” lerna의 λ”μ°ν•˜κ²Œ 망가진 μΉ΄λ‚˜λ¦¬μ•„ 릴리슀 λ©”μ»€λ‹ˆμ¦˜μž…λ‹ˆλ‹€. 이 λ©”μ»€λ‹ˆμ¦˜μ€ 짧은 git commit ν•΄μ‹œλ‘œ λλ‚˜λŠ” semver μ‹œν—˜νŒ 버전을 μƒμ„±ν•©λ‹ˆλ‹€. μ‹€μ œ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 항상 μ•„λž˜λ‘œ κ³„μ‚°ν•˜κ³  'f'μ—μ„œ μ‹œμž‘ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.)

typscript νŒ¨ν‚€μ§€μ—λ„ 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

npm view typescript 'dist-tags'
λ‹€μŒ 좜λ ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

{ latest: '2.0.10',
  next: '2.2.0-dev.20161129',
  beta: '2.0.0',
  rc: '2.1.1',
  insiders: '2.0.6-insiders.20161017' }

npm install μ‹€ν–‰ν•˜λ©΄ 2.0.10 버전이 μ„€μΉ˜λ©λ‹ˆλ‹€.
yarn을 μ‹€ν–‰ν•œ ν›„ yarn.lock에 이 ν•­λͺ©μ΄ μžˆμŠ΅λ‹ˆλ‹€.

typescript@^2.0.9:
  version "2.1.1"
  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.1.tgz#41c2b64472f529331b2055c0424862b44ce58d42"

λˆ„κ°€ 잘λͺ»ν•˜κ³  μžˆλŠ”μ§€ λ…ΌμŸν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κ·Έ 원사가 semverλ₯Ό λ”°λ₯΄κ³  λ‚΄ κ²½μš°μ—λŠ” 2.1.1인 μ΅œμ‹  μœ νš¨ν•œ 릴리슀λ₯Ό μ°ΎλŠ”λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

Npm은 dist-tags의 정보λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ 보이며 typescriptλŠ” "2.1.1-rc" 버전을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

원사λ₯Ό 톡해 nightmare λ₯Ό μ„€μΉ˜ν•  λ•Œ 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. μ•…λͺ½μ€ npm의 beta dist-tag μ•„λž˜μ— μžˆλŠ” 1.6.0 ν•΄μ„λ˜λŠ” electron@^1.4.4 에 따라 λ‹€λ¦…λ‹ˆλ‹€. κ°€μž₯ μ΅œμ‹  버전은 1.4.15 μž…λ‹ˆλ‹€. λ‚˜λ„ λͺ¨λ₯΄κ²Œ μ „μžμ˜ 베타 버전에 λŒ€ν•΄ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. 이제 ν”„λ‘œλ•μ…˜μ—μ„œ μ‹€ν–‰ν•˜λ €λ©΄ λ‹€μš΄κ·Έλ ˆμ΄λ“œν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ‚΄ ν•΄κ²° 방법은 package.json λ³„λ„λ‘œ μ›ν•˜λŠ” electron 버전을 λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰