μλ°μ€ν¬λ¦½νΈ κ°λ°μμ νμμ μΈ ν¨ν€μ§ λ§€λμ NPMκ³Ό YARNμ λν΄μ μμ보μ.
NPM (Node Package Manager)

NPM
μ΄λ Node package managerμ μ€μλ§μ΄λ©° μλ°μ€ν¬λ¦½νΈ μΈμ΄λ₯Ό μν ν¨ν€μ§ κ΄λ¦¬μ© ν΄μ΄λ€. μ μΈκ³μ μΌλ‘ κ°μ₯ λ§μ μ΄λ€μ΄ μ¬μ©νκ³ μλ ν¨ν€μ§ κ΄λ¦¬ ν΄μ΄λ©° Nodejs
λ‘ λ§λ€μ΄μ§ λͺ¨λμ μΉμμμ μ½κ² λ°μ μ€μΉνκ³ μ¬μ©ν μ μλλ‘ ν΄μ£Όλ κ΄λ¦¬ νλ‘κ·Έλ¨μ΄λ€. NPM
μμλ command
λ₯Ό μ 곡ν΄μ μ€μΉ, μμ , μμ± λ±μ κ°λ₯νκ² νκ³ μμΌλ©° λ²μ κ΄λ¦¬ λ±μ κΈ°λ₯λ μ 곡νκΈ° λλ¬Έμ μ¬μ©μ€μΈ ν¨ν€μ§μ μ
λ°μ΄νΈλ₯Ό 체ν¬ν μλ μλ€. μ€μΉλ ν¨ν€μ§(λΌμ΄λΈλ¬λ¦¬)λ node_modules
λΌλ ν΄λμ μ μ₯μ΄ λκ³ κ·Έ μ 보λ₯Ό package.json
νμΌμ λͺ
μΈνλλ‘ κ΅¬νλμ΄ μλ€.
Yarn

Yarn
μ npm
μ λ¬Έμ μ μ 보μν΄μ Facebookμμ κ°λ°ν ν¨ν€μ§ λ§€λμ μ΄λ€. npm
μ κΈ°λ°μΌλ‘ λ§λ€μκΈ° λλ¬Έμ κ·Έ κΈ°λ°νλ κ΅¬μ‘°κ° npm
κ³Ό λμΌνλ©°, μ€μΉνλ μ μ°¨κ° λ°λμλ€κ³ νλ€.
λͺκ°μ§ λΉκ΅ ν¬μΈνΈλ₯Ό μ°Ύμ보μ. (μΆμ² https://www.positronx.io/yarn-vs-npm-best-package-manager/)
- yarn.lock
package.json
μμ μ¬μ©ν μ μλ versionμ λλλ‘ μ§μ λΆν΄ μ§ μ μλ€. νμ§λ§ yarn.lock
μμλ ν¨μ¨μ μΈ λ°©λ²μΌλ‘ μ΄λ₯Ό 무결μ±μ 보μ₯νλ λ°©μμΌλ‘ κ΄λ¦¬νλ€. moduleμ μΆκ°νλ μκ° Yarn
μ Ruby
μ Gemfile.lock
κ³Ό μ μ¬ν yarn.lock
fileμ λΉ λ₯΄κ² μ
λ°μ΄νΈνλ€. ν΄λΉ fileμ μ νν μμ ν¨ν€μ§κ° λͺ¨λ μ₯μΉμ μ€μΉλμλμ§ νμΈλ¨λ€.
2. μλ
μ€μΉ μλμμ yarn
μ λλΆλΆμ npm
λ²μ λ³΄λ€ ν¨μ¬ λΉ λ₯΄κ² μ€μΉλλ€. μ΅λ 5λ°°μ μλ. νμ§λ§ μ΄λ μμ ν¨ν€μ§λ₯Ό λ€λ£°λμλ λΉμ·νλ©° μ©λμ΄ μ΄λμ λ μλ ν¨ν€μ§μλ§ ν΄λΉνλ€.
3. 보μ
npm
μ λ€λ₯Έ ν¨ν€μ§κ° ν¬ν¨λ μ μλλ‘ νλ μ½λλ₯Ό μλμΌλ‘ μ€ννλ€. μ΄λ‘μΈν΄ 보μ μμ€ν
μ μ¬λ¬ μ·¨μ½μ μ΄ λ°μνκ³ λμ€μ μ¬κ°ν λ¬Έμ κ° λ°μν μ¬μ§κ° μλ€. νμ§λ§ yarn
μ κ²½μ°μλ yarn.lock
λλ package.json
νμΌμμλ§ ν΄λΉ νμΌμ μ€μΉνλ€. λ°λΌμ 보μμ μμ΄ yarn
μ΄ μ°μλ₯Ό κ°μ§λ€.
4. μ©λ
yarn
μ΄ npm
μ λ¨μ μ 보μν΄μ κ°λ°λ ν΄ μ΄μ§λ§ λμ€ν¬ μ©λμ μ’ λ μ°¨μ§νλ€κ³ νλ€.
μ¬μ€ κ°λ°μ ν¨μ μμ΄μ λκ°μ ν° μ°¨μ΄μ μ μλ€. λ¨μΉ μμ§ NPMμ λ§μ μ¬λλ€μ΄ μ¬μ©νκ³ μλ€λ κ² λΏ.
λλ λ³΄ν΅ λ°λ°μ© μ¬μ©νλ κ² κ°λ€. κ·Έ μμΈμ λ€μνλ€. μ΄λ―Έ μ¬μ©λμλ νλ‘μ νΈμμ μ¬μ©νλ ν¨ν€μ§ λ§€λμ λ₯Ό κ·Έλλ‘ μ¬μ©νλ κ²½μ°κ° λλΆλΆμ΄κ³ , μ¬μ΄λ νλ‘μ νΈλ₯Ό ν λμλ λ€λ₯Έ μΆκ° μ¬νμ κ²ν ν΄ κ·Έμ λ§λ λ§€λμ§ ν΄μ μ¬μ©νλ κ² κ°λ€.
κ°μΈμ μΌλ‘λ yarn
μ μ νΈνλκ² κ°λ€. μ΄μ λ μμμ μ§μ΄λ³΄μλ ν¬μΈνΈλ€μ΄ λ μ μκ² λ€. μ€μ λ‘λ ν° μ°¨μ΄λ μμΌλ μ μ νκ² μ¬μ©νλκ²μ΄ μ΅κ³ μ λ°©λ²μΌλ―νλ€.
Yarn berry
yarn berry
λ node_modules
μμ΄ ν¨ν€μ§ dependencyλ₯Ό κ΄λ¦¬νκ³ μ¬μ©ν μ μλλ‘ ν΄μ£Όλ κ²μ΄λ€. (곡μλ¬Έμ)
yarn berry
λ .yarn/
ν΄λ μ΄νμ μμΆλ ν¨ν€μ§λ₯Ό μμ±νλ©°, pnp
λΌλ κ°λ
μ λμ
νμ¬ node_modules
μμ μΌμ΄λλ μ±λ₯μ ν, λΆνμν μμ‘΄μ± λ±μ ν΄κ²°ν΄μ€λ€. (볡μ‘ν node_modules
ν΄λ λμ pnp.js
νμΌμ μμ±νμ¬ ν¨ν€μ§ dependencyμ λν μ 보λ₯Ό 보κ΄νλ€.)
μ΄μ λν΄μλ λ€μμ λ€λ₯Έ ν¬μ€νΈλ₯Ό λ³λλ‘ μ¬λ¦¬λλ‘ νκ² λ€.
μ°Έκ³ ) Package versioningμ μλ―Έ - tilde(~) vs caret(^)
package versionμ λ€μκ³Ό κ°μ΄ 3μ리μ΄λ€.
0 | . | 0 | . | 0 |
---|---|---|---|---|
Major | Minor | Patch |
κ°κ°μ κ·μΉμ λ€μκ³Ό κ°λ€
Β» μ΄μ λ²μ κ³Ό νΈνλμ§ μλ λ³κ²½μ Major
λ₯Ό μ¦κ°
Β» μ΄μ λ²μ κ³Ό νΈνλλ μλ‘μ΄ featureλ Minor
λ₯Ό μ¦κ°
Β» κΈ°μ‘΄ κΈ°λ₯μ λν κ°λ¨ν fixλ Patch
λ₯Ό μ¦κ°
tilde(~) μ¬μ©
package.json
μ κΈ°λ³Έμ μΌλ‘ μ¬μ©νλ λ°©λ². κ°λ¨ν λ§νλ©΄ νμ¬ μ§μ ν λ²μ μ λ§μ§λ§ μ리 λ΄μ λ²μ μμλ§ μλμΌλ‘ μ
λ°μ΄νΈλ₯Ό νλ€.
~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
caret(^) μ¬μ©
λͺ¨λμ΄ μ΄ SemVerμ κ·μ½μ λ°λ₯Έλ€λ κ²μ μ λ’°νλ€λ κ°μ νμμ λμνλ€. κ·Έλμ Minor
λ Patch
λ²μ μ νμνΈνμ±μ΄ 보μ₯λμ΄μΌ νλ―λ‘ μ
λ°μ΄νΈλ₯Ό νλ€.
^1.2.3
: >=1.2.3
< 2.0.0
^0.2.3
: >=0.2.3
<0.3.0
^1.2.3-beta.2
: >=1.2.3-beta.2
<2.0.0