230802(μ)
π€ μ±μ₯μΌμ§ 6.0
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
πΎ (4.0)νμ΅ ν€μλμμ μ΅λν κ°λ¨ν μ 보 μ 곡, κ³ λ―Όμμ λ΄ κ²½νμ μμΈν μ μ!
π₯ (5.0)νμ΅ ν€μλλ νμ€μ ν΅μ¬μΌλ‘λ§ μ 리, μ±κ³΅/μ€ν¨ μΌμ§ μμ±νκΈ°! μ΄ λ, μ€ν¨μ κ²½νμ μμΈν μ κΈ°!
π (6.0)<μμ κ°νΈ!!!> λ§€μΌ μ΅κ΄μ μΌλ‘ ν΅μ¬λ§ μ μ μ μκ² νλ μ λ³κ²½. μ±κ³΅λ³΄λ¨ μ€ν¨μ μ΄μ μ λ§μΆκΈ°.
- π (6.1)<μμ > λ§€λ² μ±κ³΅, μ€ν¨λ₯Ό λ°λ‘ μ λ κ²λ³΄λ¨ κ²½νμΌλ‘ νννμ!
- π (6.2)<μμ > μΌμ§ μΉ΄ν κ³ λ¦¬ μμ λ³κ²½!(κ²½ν -> κ³ λ―Ό -> νκ³ -> κ΅ν)
βοΈ μ€λμ κ²½ν
monorepo
λͺ¨λ
Έλ ν¬λ νλμ μ μ₯μμ μ¬λ¬ νλ‘μ νΈλ₯Ό κ΄λ¦¬νλ κ²μ λ§νλ€. μ΄λ κ² νλ©΄ μ¬λ¬ νλ‘μ νΈλ₯Ό ν λ²μ κ΄λ¦¬ν μ μκ³ , 곡ν΅λ ν¨ν€μ§λ₯Ό μ¬μ©ν μ μλ€.
μ€λ λ΄κ° 곡λΆν λ΄μ©μμ λμ¨ λͺ¨λ
Έλ ν¬λ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λλ κ²½μ°μ λͺ¨λ
Έλ ν¬μλ€. κ°λ¨νκ² λλ ν 리 κ΅¬μ‘°λ§ μ΄ν΄λ³΄λ©΄ μλμ κ°λ€.
π¦ root
ββ apps
β ββ docs // λΌμ΄λΈλ¬λ¦¬ μκ°νλ λ¬Έμ
β ββ example // λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄λ³΄λ μμ
ββ packages
β ββ library // μ€μ λΌμ΄λΈλ¬λ¦¬
ββ .gitignore
μμ κ°μ κ΅¬μ‘°κ° λλ€. rootμλ package.jsonμ΄ μκ³ docs, example, libraryλ κ°κ° νλμ package.jsonμΌλ‘ κ΄λ¦¬λλ νλ‘μ νΈμ΄λ€. μ΄ νλ‘μ νΈμμ libraryλ μ€μ λ΄κ° κ°λ°νλ €λ λΌμ΄λΈλ¬λ¦¬, exampleμ κ°λ° μ€μΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄λ³΄λ μμ , docsλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μκ°νλ λ¬Έμλ₯Ό μμ±νλ νλ‘μ νΈμ΄λ€. μ΄ νλ‘μ νΈλ€μ νλλ‘ κ΄λ¦¬νκΈ° μν΄μ workspaceλΌλ κ°λ μ μ¬μ©νκ² λλ€. workspaceλ rootμ package.jsonμ μ€μ μ ν΄μ£Όλ©΄ λλ€.
{
"name": "root",
"private": true, // privateμΌλ‘ μ€μ ν΄μΌ npmμ publishλμ§ μλλ€.(root project μ체λ publishνμ§ μλλ€.)
"workspaces": ["packages/*", "apps/*"],
"scripts": {
"example": "yarn workspace example dev",
"build": "yarn workspace @jaydenlee/mini-query build",
"test": "yarn workspace @jaydenlee/mini-query test"
}
}
μ€μν μ μ ν΄λΉ root νλ‘μ νΈλ μ² μ ν κ·Έ μλ νλ‘μ νΈλ€μ κ΄λ¦¬νλ μ©λλΌλ μ μ΄λ€. κ·Έλ κΈ° λλ¬Έμ privateμ trueλ‘ μ€μ ν΄μΌνλ€. κ·Έλ¦¬κ³ rootμ package.jsonμ scripts μμλ workspace κΈ°λ₯μ ν΅ν΄ κ° νλ‘μ νΈμ scriptsλ₯Ό μ€νν μ μλ€.
λΆλ³μ±? μλ κ°λ³μ±!
리νΈμ½λμμ λ¬Έμ λ₯Ό νΈλλ° λ€μ μ΄μν λ¬Έμ κ° λ±μ₯νλ€. λ³΄ν΅ κ°μ²΄, λ°°μ΄ λ±μ λΆλ³μ±μ μ μ§νλ©΄μ λ¬Έμ λ₯Ό νκΈ° λ§λ ¨μΈλ°, μ΄ λ¬Έμ λ λλ € μΈμλ‘ λ°μ λ°°μ΄μ λ³κ²½μν€κΈ°λ§ν΄μ λ¬Έμ λ₯Ό ν΄κ²°ν κ²μ μꡬνκ³ μμλ€. λ¬Έμ μ체λ μ λ§ λ¨μνλ°, λ€μ ν λ² JSμ λΆλ³μ±μ μ μ§νμ§ μλ λ©μλλ€μ μκΈ°μμΌμ£Όλ κ³κΈ°κ° λμλ€.
const merge = function (nums1, m, nums2, n) {
nums1.splice(m);
nums1.push(...nums2);
nums1.sort((a, b) => a - b);
};
𫧠μ€λμ κ³ λ―Ό
- μ€λμ λ±ν κ³ λ―Όμ΄ μμλ€. π₯³
π μ€λμ νκ³
λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λλ κ³Όμ μ΄ λ무 ν₯λ―Έλ‘μ λ€. μ무λλ λ³΄ν΅ μΉ κ³΅λΆλ₯Ό μμνκ³ νλ‘μ νΈλ₯Ό νλ€λ³΄λ©΄ μΉ μ΄ν리μΌμ΄μ μμ£Όλ‘ μ§νμ΄λλλ°, μ΄λ²μλ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€μ΄λ³΄λ©΄μ μ’ λ λ€μν κ²½νμ ν μ μμλ€. μ·¨μ€μ μ μ₯μμ μ΄λ° λ§νκΈ΄ λνμ§λ§, κ·Έλλ μ΄λμ λλ μ΄ κ°λ° μΈκ³λ₯Ό μλ€κ³ μκ°νμμλ λ§€λ² μλ‘μ΄ κ²½νμ νκ² λλ λ무 μ¬λ―Έμλ€. κ°λ¨νμ§λ§ μ μ©ν λΌμ΄λΈλ¬λ¦¬λ₯Ό νλ λ§λ€μ΄μ λ°°ν¬ν΄λ³΄λ € νλ€.(μλ§ JSλ‘ κ΅¬νν μ¬λ¬ μλ£κ΅¬μ‘°κ° λ κ² κ°λ€.)
πΎ μ€λμ κ΅ν
μΈμμ λκ³ λ°°μΈ κ±΄ λ§λ€. μμΌλ‘ λ μλ‘μ΄ μΈμμ λ§λκ² λ κ²μ κΈ°λνκ³ μ°Ύμ λμκ°μ. λ무 λ근거리λ κ°λ° μΈμμ΄λ€!
πͺ΅ μ°Έκ³
- μλΉ