Caret vs Tilde in package.json

๊ถ๊ธˆํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์š”

Reference: blog.outsider.ne.krarrow-up-right

tilde (~)

: Approximately equivalent to version

  • ํ˜„์žฌ ์ง€์ •ํ•œ version์˜ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ ๋‚ด์˜ ๋ฒ”์œ„์—์„œ๋งŒ ์ž๋™์œผ๋กœ update ํ•œ๋‹ค

  • npm install MODULE_NAME --save ๋˜๋Š” npm install MODULE_NAME --save-dev ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ package.json ์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ทธ๋•Œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด tilde(~) ๋ฐฉ์‹์ด๋‹ค

  • ex)

    • ~0.0.1 : >=0.0.1 <0.1.0

    • ~0.1.1 : >=0.1.1 <0.2.0

    • ~0.1 : >=0.1.0 <0.2.0

    • ~0 : >=0.0 <1.0

  • ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ version์„ ๋ช…์‹œํ–ˆ์„ ๋•Œ ์œ„์™€ ๊ฐ™์€ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ž๋™์œผ๋กœ updateํ•œ๋‹ค

caret (^)

: Compatible with version

  • Caret์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € Semantic Versioning (SemVer) ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค

    • Node.js๋ฅผ ๋น„๋ฆ‡ํ•œ npm module์€ ๋ชจ๋‘ SemVer ๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค

  • npm version์˜ ์˜๋ฏธ

  • Caret(^)์€ Node.js module์ด SemVer ๋ฅผ ๋”ฐ๋ฅธ๋‹ค๋Š” ๊ฒƒ์„ ์‹ ๋ขฐํ•œ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ๋™์ž‘ํ•œ๋‹ค

    • ๊ทธ๋ž˜์„œ MINOR๋‚˜ PATCH version์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ update๋ฅผ ํ•œ๋‹ค

      • ex)

        • ^1.0.2 : >=1.0.2 <2.0

        • ^1.0 : >=1.0.0 <2.0

        • ^1 : >=1.0.0 <2.0

    • Tilde์™€ ๋น„๊ตํ•ด๋ณด๋ฉด ์ฐจ์ด์ ์€ ๋ช…ํ™•ํ•œ๋ฐ 1.x.x ๋‚ด์—์„œ๋Š” ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ๋ณด์žฅ๋˜๋ฏ€๋กœ ๊ทธ ๋‚ด์—์„œ๋Š” ๋ชจ๋‘ update ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค

Wrap-up

  • ~version

    • Approximately equivalent to version

    • MINOR version์˜ ์ฆ๊ฐ€ ์—†์ด, ๋ฏธ๋ž˜์˜ PATCH๋ฅผ update ํ•œ๋‹ค

    • ex)

      • ~1.2.3: will use releases from 1.2.3 to <1.3.0

  • ^version

    • Compatible with version

    • MAJOR version์˜ ์ฆ๊ฐ€ ์—†๋‹ˆ, ๋ฏธ๋ž˜์˜ MINOR/PATCH๋ฅผ update ํ•œ๋‹ค

    • ex)

      • ^2.3.4: will use releases from 2.3.4 to <3.0.0

Last updated