Node.js μμ€ μ½λμμ μ¨μ μ€ν μ°ΎκΈ°
κ°μ
λ€μ΄κ°κΈ° μμ
λ€μμ λ¬Έμ₯μ μλ μΌλ‘ κ°λ³κ² μ½μ΄λ³΄μ.
- μΊ λ¦ΏλΈμ§ λνμ μ°κ²°κ΅¬κ³Όμ λ°λ₯΄λ©΄, ν λ¨μ΄ μμμ κΈμκ° μ΄λ€ μμλ‘ λ°°λμ΄μ΄ μμ§λλ μ€νμμ§ μκ³ , 첫 λ²μ§Έμ λ§μ§λ§ κΈμκ° μ¬λ°λ₯Έ μμΉμ μλ κ²μ΄ μ€νμλ€κ³ νλ€. λλ¨Έμ§ κΈλ€μμ μμ ν μμ§λ§μ°½μ μμλ‘ λμ΄ μλΌμμ§λ λΉμ μ μ무 λ¬Έμ μμ΄ μ΄κ²μ μ½μ μ μλ€. μνλλ©΄, μΈκ°μ λλλ λͺ¨λ κΈμλ₯Ό ννλλ μ½λ κ²μ΄ μλλΌ λ¨μ΄ νλλ₯Ό μ μ²΄λ‘ μΈνμκΈ° λμ΄λ¬Έλ€.
μ κΈμ λ€μ ν λ² κΈμ λ¨μλ‘ μΈμΈνκ² λ€μ¬λ€λ³΄λ©΄ κ·Έμ λΉ λ₯΄κ² μ₯ νμμ λμλ λΆλͺ λ€λ₯Έ λλμ΄ λ€ κ²μ΄λ€.
λ¬Έμ₯ μ λ¨μ΄λ€μ μ΄λ£¨λ λ¬Έμμ ꡬμ±κ³Ό μκ° κ°λ€λ©΄ μΈκ°μ, νΉνλ ν΄λΉ μΈμ΄μ μ΅μν μ¬λμΌ μλ‘ λ¬Έμ₯ μ 체 λ»μ μ΄ν΄νλλ° λ³λ€λ₯Έ μ΄λ €μμ κ²ͺμ§ μλλ€λ κ² μμ§μ΄λ€.
κ·Έλ¬λ μ€λ₯λ₯Ό μ°Ύμ§ λͺ» νλ€κ³ νμ¬ λ무 μμ± ν νμλ μλ€. μ€νλ € μ½λ λ° λ²λ² μλ€κ±°λ μ§μ μ λ§μ΄ ν κ²½μ°κ° κ·Έ μΈμ΄λ₯Ό λ μ΄μνκ² λλΌκ±°λ λλ μ¦μΈκ° μλ€λ μλ―Έλ λ§μ΄λ€.
κ·Έλ°λ° μ λλ°μμ΄ κΈ°μ λΈλ‘κ·Έμ μ΄λ° μ리λ₯Ό νκ³ μλ κ±ΈκΉ?
μμ€ μ½λ μμ κ²°κ΅μ μ¬λμ΄ μμ±νλ μ§λΌ ν΄λμ€λ λ©μλ, λ³μ λͺ λ±μ μ μΈ ν λ μ μ§ μμ μ€νμκ° λ°μν μ¬μ§κ° μκ³ μ μ¬ν λ°λΌλ³΄μ§ μλλ€λ©΄ μ¬λμ΄ μ§μ μ΄λ° μ€λ₯λ₯Ό μ²λ¦¬νκΈ°κ° λ§€μ° νλ€λ€λ κ² λ¬Έμ μ΄λ€. μ€νμκ° κ³μν΄μ λμ λλ€λ©΄ λ³μ νΉμ κ°μ²΄μ μμ± keyλ±μ΄ μλ―Ένλ λ°κ° ν΄μλμ΄ μΆν ν΄λΉ κΈ°λ₯/μμ±μ μ°Έμ‘°νκ±°λ λ€λ₯Έ κ°λ°μκ° μ΄λ₯Ό νμ©ν λ νΌλκ³Ό μ€ν΄λ₯Ό λ°μμν¬ κ°λ₯μ±μ΄ μλ€.
Do you know Typo?
Jetbrainsμμ λ§λ PyCharmμ΄λ IntelliJ νΉμ μ΄λ₯Ό κΈ°λ°μΌλ‘ ν Android Studio νκ²½μμμ κ°λ° κ²½νμ΄ μλ μ¬λμ΄λΌλ©΄ TypoλΌλ λ§μ ν λ² μ΄μμ λ€μ΄λ΄€μ κ²μ΄λ€. Typoλ μμμ μΈκΈν μμ€ μ½λ λ΄ μ€νμλ€μ 보νΈμ μΈ νΉμ κ°μΈμ μΌλ‘ μμ±ν μ¬μ (Dictionary) λͺ©λ‘μ λ΄μ©κ³Ό λΆν©νλμ§λ₯Ό κ²μ¬νκ³ κ²½κ³ λ©μμ§λ₯Ό 보λ΄λ μν μ νλ μ½λ ν¬λ§·ν°μ μΌμ’ μ΄λ€. μ΄μ λν΄ μ΄λ―Έ μλ μ¬λμ΄λΌλ©΄ eslintμ spellcheck νλ¬κ·ΈμΈμ΄ λ¬΄μ¨ μν μ νλμ§ λ©λνκΈ°κ° λ νΈν κ²μ΄λ€. λ€λ§ λ³Έ ν¬μ€νΈλ Node.jsμ κ΄ν κ²μ΄λ Typoμ λν μμΈν μ€λͺ μ μλ΅νκ² λ€.
λ§λ³΄κΈ°
Node.js κ°λ° νκ²½μμλ Typoμ λΉμ·ν μν μ νλ μΉκ΅¬κ° μλλ°, λ°λ‘ eslintμ νλ¬κ·ΈμΈμΈ eslint-plugin-spellcheckμ΄λ€. μ 체 μ€μΉ λ° μ μ© λ°©λ²μ μμ μ΄κ² μ€μ νκ²½μμ μ΄λ€ μμΌλ‘ μ μ©λλμ§ κ°λ³κ² ν₯μ보λλ‘ νμ.
λ€μμ μ¬μ©μμ μ΄λ¦, μ±, λμ΄λ₯Ό μμ±μ 맀κ°λ³μλ‘ λ°μ private
μΌλ‘ μ μ₯νκ³ sayHello
λΌλ ν¨μλ‘ λ³ΈμΈμ λν΄ μκ°νλ ν΄λμ€μ μ μΈλ¬Έμ΄λ€.
1 | export class User { |
μ μ€ν¬λ¦½νΈλ₯Ό μ°¬μ°¬ν μ΄ν΄λ³΄μ. νΉμ λ¬Έμ μ μ΄ λ³΄μ΄λκ°?
2κ°μ§ μλλ° μ΄λ TSCμ λ¬Έλ²μ μ€λ₯κ° μλ μμ μΈκΈνλ μμ΄ μ€νμμ ν΄λΉνλ κ²μ΄λ€. lintμ spellcheck νλ¬κ·ΈμΈμ μ μ©ν νκ²½μμ μ λ¬Έμ₯μ λ€μ 보면 λ€μκ³Ό κ°μ΄ λμ¨λ€.
μμ½νμλ©΄ λ€μκ³Ό κ°λ€.
- famliy λΌλ λ¨μ΄λ₯Ό μ°Ύμ μ μμ΅λλ€.
- maet λΌλ λ¨μ΄λ₯Ό μ°Ύμ μ μμ΅λλ€.
첫 λ²μ§Έλ famliyNameμ΄λΌλ λ©€λ²μμ famliyλΌλ λ¨μ΄κ° μλͺ»λμλ€λ μλ―Έμ΄λ€. lκ³Ό iμ μμΉκ° λ°λμ΄ μλλ°, μλ μλλλ‘ familyλ‘ κ³ μ³μΌ νλ€.
λ λ²μ§Έλ maetμΈλ°, meetμ΄λΌκ³ μ μΌλ €λ€κ° μ€μν μΌμ΄μ€μ΄λ€.
μ½λ νμ§ κ΄λ¦¬ μμ
μ μ¬λμ΄ μ§μ ν΄μΌ νλ€κ³ μκ°ν΄λ³΄μ. λ§€μΌ ν루 8μκ°μ© λͺ¨λν°μμ μμ λ΄κ° μ΄κΈ°λ μ»΄ν¨ν°κ° μ΄κΈ°λ λμΈμνλ©° μμ€ μ½λμ κΈμ νλνλλ₯Ό μΌμΌμ΄ λ€ νμΈνλ κ±°λ€. ν΄μ§ κ° λ μΉ΄λ‘λ€.
λ€νν μ΄λ° 건 κ·Έ μ΄λ€ κ°λ°μλ νμνμ§ μλ μμμ΄λ€. μ΄μ κ°μ λ¬Έμ μ λν ν΄κ²°μ± μ μ‘°κΈλ§ κ²μν΄ λ³΄λ©΄ λ³΄ν΅ νμ μ€λΉλμ΄ μλ€.
μ¬λ΄μ΄μ§λ§ μ΄ μμ λκ² λ³΄λ©΄ μμ±ν μ½λλ₯Ό λΉλνκ³ λͺ¨μμ ν μ€νΈ νκ³ μλ²μ λ°°ν¬λλ μμμ μλν ν CI/CD νλ‘μΈμ€, λμκ° DevOps μμ§λμ΄λ§ 곡λ²λ μ΄λ¬λ μ λ¬λ ν΄λ κ²°κ΅ μ΄λ¬ν κ°λ°μ§λ€μ κ·μ°¨λμ¦μ ν΄κ²°νκ³ μ λμ¨ κ²°κ³Όκ° μλκ° μΆλ€.
μ€μΉ λ° μ μ©
λ¨Όμ vsc μ€ν¬λ¦½ν νκ²½μ νμ μ¬μ©νλ κΈ°λ³Έ κ°μ λ§μΆμλ€. κ° μμμ λν μ€λͺ μ΄ λͺ¨λ λ€μ΄κ°λ©΄ ν¬μ€νΈκ° λ무 κΈΈμ΄μ§λ―λ‘ spellcheck νλ¬κ·ΈμΈμ μ€μΉμ μ μ©μ λν΄μλ§ μ μλ€. μλλ νκ²½ μ 보μ΄λ€.
- μ¬μ© μΈμ΄ : TypeScript
- λ¦°ν° & μ½λ ν¬λ§·ν° : eslint + prettier
- λ°νμ : Node v16
- ν¨ν€μ§ κ΄λ¦¬μ : yarn
λ€μμ λͺ λ Ήμ΄λ‘ νλ¬κ·ΈμΈμ νλ‘μ νΈ μμ‘΄μ± λͺ¨λλ‘ μ€μΉνλ€.
.eslintrc
μ spellcheck
νλ¬κ·ΈμΈμ, λ¦°ν° κ·μΉμΌλ‘λ spellcheck/spell-checker
νλͺ©μ μΆκ°νλ€.
1 | module.exports = { |
μ΄λ¬λ©΄ κΈ°λ³Έμ μΈ μ€μ μ λμ΄ λλ€. μ¬λ΄μ΄μ§λ§ κ·μΉ λ 벨μ error(2)λ‘ λΉ‘λΉ‘νκ² μ€μ νλ λΆλ€λ μ’ μ’ μλλ°, λ§μΆ€λ² κ²μ¬ μ λμΌ warn(1) μμ€μ΄λ©΄ μΆ©λΆν κ²μΌλ‘ λ³Έλ€.
κ·μΉ μ΅μ
μ¬ν λ€λ₯Έ eslint νλ¬κ·ΈμΈλ€κ³Ό λ§μ°¬κ°μ§λ‘ μ€ν μ²΄ν¬ νλ¬κ·ΈμΈ μμ μ¬λ¬ κ·μΉ μ€μ μ΅μ λ€μ μ 곡νλ€. λ€μμ νλ¬κ·ΈμΈ μμ€ μ μ₯μ λ° NPM ν¨ν€μ§ νμ΄μ§μμ μ 곡λλ κ·μΉ μ΅μ λ€μ΄λ€.
1 | module.exports = { |
μ¬κΈ°μ λ μ¬κ²¨ λ³Ό μ΅μ λ€μ΄ λͺ κ°μ§ 보μΈλ€.
μ μ© λμ
μΌλ¨ identifiers
μ΅μ
μ μμ£Ό νΉλ³ν μν©μ΄ μλλ©΄ κΈ°λ³Έ κ°μΈ true
λ‘ λλ κ² μ ν©νλ€.
comments
μ strings
μ μ λ§λ‘ μ΅μ
λνλ°, μ΄ λΆλΆμ κ°λ°μ λ³ΈμΈμ μ·¨ν₯μ λ§μΆ° μ ννλ©΄ λκ² λ€. λ³΄ν΅ comments
λ false
λ‘ (μ£Όμμ νκΈλ‘ λ€λ κ²½μ°κ° λ§μλ° νκΈμ λΉμ°νκ²λ λ§μΆ€λ² κ²μ¬ μ ν΄μ€λ€.) strings
λ true
λ‘ μ€μ νλ κ²½μ°κ° λ§λ€.
μ΅μ λͺ | νμ | κΈ°λ³Έκ° | μ€λͺ | μΆμ² |
---|---|---|---|---|
comments | boolean | true | μ£Όμμ λ§μΆ€λ² κ²μ¬ μ μ© μ¬λΆ | false |
strings | boolean | true | λ¬Έμμ΄μ λ§μΆ€λ² κ²μ¬ μ μ© μ¬λΆ | true |
identifiers | boolean | true | μλ³μ(λ³μλͺ , ν΄λμ€ λͺ λ±)μ λ§μΆ€λ² κ²μ¬ μ μ© μ¬λΆ | true |
μ μΈ λμ
ignoreRequire
λ λ¬Έμ κ·Έλλ‘ require
λ¬Έ μμ μλ λ¬Έμμ΄(λͺ¨λ λͺ
νΉμ κ²½λ‘ λͺ
)μ μ μΈν κ²μΈκ°μ λν μ΅μ
μ΄λ€. κΈ°λ³Έκ°μ΄ false
λ‘ λμ΄ μλλ°, κ²½ν μ true
λ‘ ν΄μ£Όλ νΈμ΄ μ μ 건κ°μ μ΄λ‘λ€.
skipWords
λ λ§μΆ€λ² μ μ© λμμμ μ μΈ ν νλͺ©λ€μ΄λ€. μμΈλ‘ JSλ TSμμ μμ£Ό μ¬μ©νλ μ©μ΄λ€μ΄ λ§μΆ€λ² κ²μ¬μ μ μ©λλ κ²½μ°κ° λ§λ€. λΉμ₯ λ°©κΈ μΈκΈ ν JS
, TS
λΌλ λ¨μ΄ μ체λ κ²μ¬κΈ°μ κ±Έλ¦°λ€. μμ΄μ¬μ μ λ±μ¬λ νλͺ©λ§ ν΅κ³Όνλ€λ μ΄μΌκΈ°λ€. μ΄λ κ°μ κ²½νμ λΉμΆμ΄ κ²μ¬μμ μ μΈν΄μΌ ν λ¨μ΄λ€μ ν κ³³μ μ μ₯ ν΄ λκ³ κ΄λ¦¬νλ κ²μ μΆμ²νλ€.
skipIfMatch
μ skipWordsIfMatch
λ νλͺ©μ λͺ¨λ μ κ· νν μμ μ¬μ©νλ€. κΈ°λ³Έμ μΌλ‘ μ΄λ€ λ¨μ΄/λ¬Έμ₯ λ±μ κ²μ¬ ν λ μμ±ν μ κ· νν μμ λ§μ‘±νλ κ²½μ° μ μΈνκ² λ€λ μλ―ΈμΈλ°, skipIfMatch
λ λ¬Έμ₯ μ 체μ, skilWordsIfMatch
λ λ¨μ΄ λ³λ‘ μ μ©λλ€.
minLenth
λ κ²μ¬λ₯Ό μνν λ¨μ΄μ μ΅μ κΈΈμ΄λ₯Ό μλ―Ένλ€. κ°μ 3
μΌλ‘ μ€μ νλ©΄ 1~2κΈμλ‘ μ΄λ£¨μ΄μ§ λ¨μ΄λ λ§μΆ€λ² κ²μ¬μ κ±Έλ¦¬μ§ μλλ€.
μ΅μ λͺ | νμ | κΈ°λ³Έκ° | μ€λͺ | μΆμ² |
---|---|---|---|---|
ignoreRequire | boolean | false | require λ¬Έ μμ μλ λ¬Έμμ΄ κ²μ¬ μ μ© μ μΈ | true |
skipWords | Array |
[] | κ²μ¬μμ μ μΈμν¬ λ¨μ΄ λͺ©λ‘ | |
skipIfMatch | Array |
[] | κ²μ¬μμ μ μΈν λ¬Έμμ΄μ μ κ· ννμ λͺ©λ‘ | |
skipWordsIfMatch | Array |
[] | κ²μ¬μμ μ μΈν λ¨μ΄μ μ κ· ννμ λͺ©λ‘ | |
minLenth | number | 1 | κ²μ¬λ₯Ό μ μ©ν μ΅μ λ¨μ΄/λ¬Έμ₯ κΈΈμ΄ | 3 |