μ΄λ² ν¬μ€νΈλ NPM(Node Package Manager)μ΄ λ€λ₯Έ μΈμ΄μ ν¨ν€μ§ λ§€λμ μλ λ€λ₯Έ νΉμ§μΈ Nested Dependenciesμ λν΄ λ€λ£¨λ κΈμ λ²μν κΈμ λλ€. μλ¬Έ: Nested Dependenciesμ λλ€. (첫λ²μκΈμ΄λΌ μ€μμ΄ μμ μ μμ΅λλ€.) *μ κ°μΈλΈλ‘κ·Έμμ κ°μ Έμμ΅λλ€.
μ€λλ λ§μ ν¨ν€μ§ λ§€λμ λ€μ΄ μμ§λ§, κΈ°λ³Έμ μΌλ‘ μ€μ²©λ μ’ μμ±(Nested Dependencies)μΌλ‘ μλνλλ‘ μ€κ³λ ν¨ν€μ§ λ§€λμ λ npm λ°μ μλ€. (μ μ΄λ λ΄κ° μκΈ°μλ)

μ λ€μ΄μ΄κ·Έλ¨μμ deps 컨ν
μ΄λλ€μ μ’
μμ±μ 격리λ μ§ν©μ λνλΈλ€. λλΆλΆμ ν¨ν€μ§ λ§€λμ λ€μ λͺ¨λ μ’
μμ±μ λν΄μ νλμ 'λ€μμ€νμ΄μ€'λ₯Ό κ°λλ€. λλ μ΄ μνλ₯Ό 'flat(ννν)' μ΄λΌκ³ λΆλ₯Έλ€. μλνλ©΄ μ’
μμ±μ ν λ μ€μ§ ν λ¨κ³μ κ²μ μ©μ΄μ±μ κ°μ§λ€λ κ²μ μλ―ΈνκΈ° λλ¬Έμ΄λ€. κ·Έκ²μ μ± μ 체μμ 'foo' λΌλ μ΄λ¦μ κ°μ§ μ’
μμ±μ΄ νλλ§ μλ€λ κ²μ μλ―Ένλ€.
ννν μ’ μμ± μμ€ν μμ μ’ μμ±μ νΈλ μμ μ΄ μ΄λ»κ² μΌμ΄λλμ§μ λν΄ μμ보기 μν΄ μμ λ₯Ό μ΄ν΄λ³΄λλ‘ νμ.

μ΄ μμ μλ μΈ κ°μ μ’
μμ±μ΄ μλ€. κ²μ μ μ λ€μ 'μμ‘΄' κ΄κ³λ₯Ό μλ―Ένλ€. μ¦, μ°λ¦¬ μ±μ a, b, κ·Έλ¦¬κ³ cλ₯Ό μμ‘΄νκ³ μκ³ , cλ aλ₯Ό μμ‘΄νκ³ μλ€. μ°λ¦¬ μ±κ³Ό cλ λͺ¨λ aλ₯Ό μμ‘΄νκ³ μλ€.
μ’
μμ±μ΄ νννκΈ° λλ¬Έμ (μ°λ¦¬ μ± μ 체μ μ€μ§ νλμ 볡μ¬λ³Έλ§ κ°μ§κ³ μλ€λ κ²μ μλ―Έν¨) μ°λ¦¬ μ±κ³Ό cκ° λͺ¨λ aμ νΈνλλ λ²μ μ μμ‘΄νλλ‘ ν΄μΌνλ€λ κ²μ μλ―Ένλ€. λ§μ½ μ°λ¦¬κ° cλ₯Ό μλ‘μ΄ λ²μ μΌλ‘ μ
κ·Έλ μ΄λνκ³ μΆλ€λ©΄, κ·Έλ¬λ μ λ²μ μ΄ μ°λ¦¬ μ±κ³Ό μμ‘΄νκ³ μλ aμ νΈνλμ§ μλ λ²μ μ aλ‘ μ
κ·Έλ μ΄λνλ€λ©΄, μ’
μμ± μΆ©λμ΄ λ°μνλ€. μ΄ νμμ "DLL μ§μ₯" (Windows) λλ λ μΌλ°μ μΌλ‘ "μ’
μμ± μ§μ₯" μ΄λΌκ³ νλ€.
μ΄λ²μλ μ€μ²©λ μ’ μμ± μμ€ν μ κ°μ μμ λ₯Ό μ΄ν΄λ³΄μ.

μ¬κΈ°μλ ν λ¨κ³μ μ’
μμ±μ΄ μλλΌ μ¬λ¬ λ¨κ³μ μ’
μμ±μ κ°μ§κ³ μλ€. aμ bκ° μ’
μμ±μ κ°μ§κ³ μμ§ μλ€κ³ κ°μ νμ. μ°λ¦¬ μ±κ³Ό cλ λͺ¨λ μ¬μ ν aμ μμ‘΄νκ³ μλ€.
μ€μ²©λ μ’
μμ±μμλ aμ λ 볡μ¬λ³Έμ κ°μ§κ³ μλ€. μ°λ¦¬ μ±μ΄ aμ λ²μ 1μ΄ νμνκ³ cκ° aμ λ²μ 2κ° νμνλ€λ©΄ aμ λ λ²μ μ λͺ¨λ μ€μΉνλ€. cμ μ’
μμ±λ€μ΄ cμκ²λ§ μ΄μ© κ°λ₯νκ³ , μ΄λ€ κ²λ κ·Έκ²λ€μ μ κ·Όν μ μλ€. μΆκ°μ μΌλ‘, μ°λ¦¬ μ±κ³Ό cκ° λͺ¨λ aμ νΈνλλ λ²μ μ μμ‘΄νλ€λ κ²μ΄ λλ¬λλ€λ©΄, c's deps ν΄λλ₯Ό μμ±ν νμκ° μλ€. μ΄ κ²½μ°μλ ννν μ’
μμ±μ²λΌ λ³΄μΌ κ²μ΄λ€. (μ΄κ²μ΄ npm dedupeκ° λμνλ λ°©λ²μ΄λ€.)