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
2
3
4
5
6
7
8
9
10
11
12
export class User {
constructor(
private name: string,
private famliyName: string,
private age?: number,
) {}
sayHello() {
console.log(
`Hello, this is ${this.name} ${this.famliyName}. Nice to maet you!`,
);
}
}

μœ„ 슀크립트λ₯Ό 찬찬히 μ‚΄νŽ΄λ³΄μž. ν˜Ήμ‹œ 문제점이 λ³΄μ΄λŠ”κ°€?

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

λ‹€μŒμ˜ λͺ…λ Ήμ–΄λ‘œ ν”ŒλŸ¬κ·ΈμΈμ„ ν”„λ‘œμ νŠΈ μ˜μ‘΄μ„± λͺ¨λ“ˆλ‘œ μ„€μΉ˜ν•œλ‹€.

1
yarn add --dev eslint-plugin-spellcheck

.eslintrc에 spellcheck ν”ŒλŸ¬κ·ΈμΈμ„, λ¦°ν„° κ·œμΉ™μœΌλ‘œλŠ” spellcheck/spell-checker ν•­λͺ©μ„ μΆ”κ°€ν•œλ‹€.

1
2
3
4
5
6
7
8
9
10
11
module.exports = {
...
plugins: ['spellcheck' ...],
rules: {
...
'spellcheck/spell-checker': ['warn', {
// 여기에 μ˜΅μ…˜ μΆ”κ°€
}],
}
...
};

이러면 기본적인 섀정은 끝이 λ‚œλ‹€. μ—¬λ‹΄μ΄μ§€λ§Œ κ·œμΉ™ λ ˆλ²¨μ„ error(2)둜 λΉ‘λΉ‘ν•˜κ²Œ μ„€μ •ν•˜λŠ” 뢄듀도 μ’…μ’… μžˆλŠ”λ°, λ§žμΆ€λ²• 검사 정도야 warn(1) μˆ˜μ€€μ΄λ©΄ μΆ©λΆ„ν•  κ²ƒμœΌλ‘œ λ³Έλ‹€.

κ·œμΉ™ μ˜΅μ…˜

여타 λ‹€λ₯Έ eslint ν”ŒλŸ¬κ·ΈμΈλ“€κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ 슀펠 체크 ν”ŒλŸ¬κ·ΈμΈ μ—­μ‹œ μ—¬λŸ¬ κ·œμΉ™ μ„€μ • μ˜΅μ…˜λ“€μ„ μ œκ³΅ν•œλ‹€. λ‹€μŒμ€ ν”ŒλŸ¬κ·ΈμΈ μ†ŒμŠ€ μ €μž₯μ†Œ 및 NPM νŒ¨ν‚€μ§€ νŽ˜μ΄μ§€μ—μ„œ μ œκ³΅λ˜λŠ” κ·œμΉ™ μ˜΅μ…˜λ“€μ΄λ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
module.exports = {
...
plugins: ['spellcheck' ...],
rules: {
...
'spellcheck/spell-checker': [
1,
{
comments: false,
/**
* κΈ°λ³Έκ°’ : true
* νƒ€μž… : boolean
* true둜 μ„€μ • μ‹œ 주석에 μžˆλŠ” λ¬Έμž₯(μ˜μ–΄)듀도 슀펠 체킹을 μ‹€μ‹œν•©λ‹ˆλ‹€.
*/
strings: true,
/**
* κΈ°λ³Έκ°’ : true
* νƒ€μž… : boolean
* true둜 μ„€μ • μ‹œ λ¦¬ν„°λŸ΄ string의 슀펠 체킹을 μ‹€μ‹œν•©λ‹ˆλ‹€.
* 단 λ¦¬ν„°λŸ΄ stringμ΄λž€ quote ('' ν˜Ήμ€ "")둜 κ΅¬μ„±λœ λ¬Έμžμ—΄μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
* backtick (``) 으둜 κ΅¬μ„±λœ λ¬Έμžμ—΄μ€ λ¦¬ν„°λŸ΄ 취급을 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
*/

identifiers: true,
/**
* κΈ°λ³Έκ°’ : true
* νƒ€μž… : boolean
* true둜 μ„€μ • μ‹œ μ‹λ³„μžμ— λŒ€ν•œ 슀펠 체킹을 μ‹€μ‹œν•©λ‹ˆλ‹€.
* μ—¬κΈ°μ„œ μ‹λ³„μžλΌλŠ” 건 λ³€μˆ˜λͺ…, 클래슀λͺ…, ν•¨μˆ˜λͺ… 등을 μ˜λ―Έν•©λ‹ˆλ‹€.
*/

ignoreRequire: false,
/**
* κΈ°λ³Έκ°’ : false
* νƒ€μž… : boolean
* require문에 λ“€μ–΄κ°€λŠ” λ¬Έμž₯은 슀펠 μ²΄ν‚Ήμ—μ„œ λ¬΄μ‹œν•©λ‹ˆλ‹€.
*/

templates: true,
/**
* κΈ°λ³Έκ°’ : true
* νƒ€μž… : boolean
* ES6 ν…œν”Œλ¦Ώμ— 맞좰 슀펠 체킹을 μ‹€μ‹œν•©λ‹ˆλ‹€.
*/

lang: 'en_US',
/**
* κΈ°λ³Έκ°’ : en_US (μ˜μ–΄ - 미합쀑ꡭ)
* νƒ€μž… : string (Locale String)
* μ‚¬μš©ν•  μ–Έμ–΄λ₯Ό μ„ νƒν•©λ‹ˆλ‹€. μ‚¬μš© κ°€λŠ₯ν•œ μ˜΅μ…˜μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
* 1. en_US (μ˜μ–΄ - 미합쀑ꡭ)
* 2. en_CA (μ˜μ–΄ - μΊλ‚˜λ‹€)
* 3. en_AU (μ˜μ–΄ - μ˜€μŠ€νŠΈλ ˆμΌλ¦¬μ•„ μ—°λ°©)
* 4. en_GB (μ˜μ–΄ - λŒ€μ˜μ œκ΅­)
*/

langDir: '',
/**
* κΈ°λ³Έκ°’ : ''
* νƒ€μž… : string (Dir Path String)
* μ–Έμ–΄ 파일 κ²½λ‘œμž…λ‹ˆλ‹€. 기본적으둜 ν”ŒλŸ¬κ·ΈμΈ λ‚΄λΆ€μ˜ 디렉토리λ₯Ό λ”°λ¦…λ‹ˆλ‹€.
*/

skipWords: ['lang', 'jsdoc'],
/**
* κΈ°λ³Έκ°’ : []
* νƒ€μž… : Array<string>
* 슀펠 μ²΄ν‚Ήμ—μ„œ μ œμ™Έ ν•  ν•­λͺ©λ“€μž…λ‹ˆλ‹€. 이 곳에 λͺ…μ‹œν•œ λ‹¨μ–΄λŠ”
* λ§žμΆ€λ²• 검사λ₯Ό μ§„ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
*/

skipIfMatch: ['http://[^s]*'],
/**
* κΈ°λ³Έκ°’ : []
* νƒ€μž… : Array<string> (Array<Regex String>)
* 슀펠 μ²΄ν‚Ήμ—μ„œ μ œμ™Έ ν•  ν•­λͺ©λ“€μ„ μ •κ·œν‘œν˜„μ‹μœΌλ‘œ μ§€μ •ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
* λ‹€λ§Œ μ£Όμ˜μ‚¬ν•­μœΌλ‘œ λ¬Έμž₯ 전체λ₯Ό ν•˜λ‚˜μ˜ μš”μ†Œλ‘œ μΈμ‹ν•˜κΈ° λ•Œλ¬Έμ— 주석 λ“±μ—μ„œ μ‚¬μš© μ‹œ μ˜λ„μΉ˜ μ•Šκ²Œ
* λ™μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
* μœ„ 적어둔 것과 같이 μ‚¬μš©ν•˜λ©΄ https둜 μ‹œμž‘ν•˜λŠ” url 정보에 λŒ€ν•΄μ„œλŠ”
* λ§žμΆ€λ²• 검사λ₯Ό μ§„ν–‰ν•˜μ§€ μ•Šκ²Œ λ©λ‹ˆλ‹€.
*/

skipWordsIfMatch: ['^[-\\w]+/[-\\w\\.]+$'],
/**
* κΈ°λ³Έκ°’ : []
* νƒ€μž… : Array<string> (Array<Regex String>)
* 슀펠 μ²΄ν‚Ήμ—μ„œ μ œμ™Έ ν•  ν•­λͺ©λ“€μ„ μ •κ·œν‘œν˜„μ‹μœΌλ‘œ μ§€μ •ν•©λ‹ˆλ‹€.
* λ‹€λ§Œ 이 경우 λ¬Έμž₯ 전체가 μ•„λ‹Œ λ‹¨μ–΄λ³„λ‘œ μ μš©λ©λ‹ˆλ‹€.
* μœ„ μ˜ˆμ‹œμ™€ 같이 적어두면 MIME νƒ€μž…μ˜ 단어에 λŒ€ν•΄μ„œλŠ”
* λ§žμΆ€λ²• 검사λ₯Ό μ§„ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
*/

minLenth: 1,
/**
* κΈ°λ³Έκ°’ : 1
* νƒ€μž… : number
* λ§žμΆ€λ²• 검사λ₯Ό μ§„ν–‰ν•˜κΈ° μœ„ν•œ μ΅œμ†Œν•œμ˜ 단어 κΈΈμ΄μž…λ‹ˆλ‹€.
* μœ„ μ˜ˆμ‹œμ²˜λŸΌ 3으둜 μž…λ ₯μ‹œ 3κΈ€μž 미만의 길이λ₯Ό 가진 λ‹¨μ–΄λŠ”
* 슀펠 체킹을 μ§„ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
*/
},
],
}
...
};

μ—¬κΈ°μ„œ 눈 여겨 λ³Ό μ˜΅μ…˜λ“€μ΄ λͺ‡ 가지 보인닀.

적용 λŒ€μƒ

일단 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