export function foo() {
return 123;
}
tslint.json
๊ตฌ์ฑ:
{
"extends": ["tslint:latest"],
"rules": {
"indent": {
"options": ["spaces", 4]
}
}
}
tslint
์ค๋ฅ๊ฐ ์์ต๋๋ค. tslint --fix
์์ ์ฌํญ์ด ์์ต๋๋ค.
tslint
๋ณด๊ณ ๋ ์ค๋ฅ , ์์ ์ฌํญ์ด tslint --fix
๋์ด ๊ฒฐ๊ณผ ํ์ผ์ด ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
export function foo() {
return 123;
}
@adidahiya @nchen63์ ์ด ๋๊ธ ์ ์ฐธ์กฐํ์ธ์.
@nchen63์์ :
ํญ -> x ๊ณต๋ฐฑ ๋ฐ x ๊ณต๋ฐฑ -> ํญ์ ์์ ํ์ง๋ง x ๊ณต๋ฐฑ -> y ๊ณต๋ฐฑ์ ์์ ํ์ง ์์ต๋๋ค.
๊ทธ๋๋ x spaces
์์ y spaces
ํด์ผ ํฉ๋๋ค.
๋ด ํ๋ก์ ํธ๋ 2์ 4 ๊ณต๊ฐ์ ๋ชจ๋ ์ฌ์ฉํฉ๋๋ค. x spaces
๊ท์น์ y spaces
ํ๋ฉด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋ํ ํฌ๊ธฐ ์๋ฐ์ ์์ ํ๊ฑฐ๋ ์์ ํ ์ ์๋๋ก ์ต์ํ ์ค๋ฅ๋ก ๋ณด๊ณ ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ ์ด ๋ฌธ์ ์ ๋ถ๋ช์ณค์ต๋๋ค. ํ์ฌ ์ฌ์ดํธ(https://palantir.github.io/tslint/rules/indent/)์ ๋ฌธ์ํ๋ ๋ค์ฌ์ฐ๊ธฐ ํฌ๊ธฐ์ ๋ํ ๊ตฌ์ฑ์ ์ค์ ๋ก ์๋ฌด ๊ฒ๋ ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์, ์ด ๋ฒ๊ทธ๋ฅผ ์์ ํ์ญ์์ค. Angular CLI๋ ํ์ผ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ๋ค์ฌ์ฐ๊ธฐ ์์ค์ผ๋ก 2๊ฐ์ ๊ณต๋ฐฑ์ ์ฌ์ฉํ๋ฉฐ ๋ชจ๋ ๋ฐ์ดํ๋ ์์ ๋ฐ์ดํ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ tslint๋ฅผ ์คํํ์ฌ ์ฌ์ฉ์์ tslint.json์ ๋ฐ๋ผ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์์ ํฉ๋๋ค. ๋ฐ์ดํ๋ ์ ์๋ํ์ง๋ง(๋ด ๊ธฐ๋ณธ ์ค์ ์ ๋ฐ๋ผ ํฐ ๋ฐ์ดํ๋ก ๋ณํ) ๋ค์ฌ์ฐ๊ธฐ๋ 2์นธ์ผ๋ก ์ ์ง๋ฉ๋๋ค(์ ๋ 4์นธ์ ์ ํธํจ). Tslint๋ ์ค์ TAB ๋ฌธ์๊ฐ ํ์๋๋ ๊ฒฝ์ฐ์๋ง ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ์ง๋ง ๊ณต๋ฐฑ ์๋ ํ์ธํด์ผ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ ๋๋ค.
https://github.com/palantir/tslint/blob/master/src/rules/indentRule.ts ์์ ์ฌ์ฉ๋๋ ๊ตฌํ์ด ์๋นํ ์์งํ ๊ฒ ๊ฐ์ผ๋ฉฐ x spaces -> y spaces
์์ ์๋ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ฌ์ฐ๊ธฐ ๋๋น๊ฐ 2์นธ์ผ๋ก ์ ํ๋์๋ค๊ณ ๊ฐ์ ํ๊ณ ๋ค์ ์ฝ๋๋ฅผ ๊ณ ๋ คํ์ธ์.
foo = {
a: {
b: {
c: 'c'
}
},
d: 'd'
}
์ฐ๋ฆฌ์ ํ์ฌ ๊ตฌํ์ด ์ด๊ฒ์ด ์ ํ ์คํจํ๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? ๊ฐ ๊ณต๋ฐฑ ์ํ์ค๋ ์ ๊ท์ / /
์ ๋ฌํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ 2์นธ์ ๋ฐฐ์๋ฅผ ์ฐพ์๋ ์ด๊ฒ์ ํต๊ณผํ ๊ฒ์
๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ค์ค ์์ค ๋ค์ฌ์ฐ๊ธฐ ์๋๋ฆฌ์ค์์ 4๊ฐ์ ์ ํ ๊ณต๋ฐฑ์ ํต๊ณผ ์๋๋ฆฌ์ค๊ฐ ๋ ์ ์์ง๋ง 4๊ฐ์ โโ๊ณต๋ฐฑ์ผ๋ก ๋จ์ผ ์์ค์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์์ํ๋ ๊ฒ์ ์คํจํด์ผ ํฉ๋๋ค.
๋ชจ๋ ์๋ฃจ์
์ eslint๊ฐ ์ํํ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ AST๋ฅผ ํต๊ณผํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค(https://github.com/eslint/eslint/blob/master/lib/rules/indent.js). ๊ทธ ๋จ์ ์ tabs -> spaces
๋๋ spaces -> tabs
๋ํด ์ฝ๊ฐ์ ์ฑ๋ฅ ์ ํ๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ค์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ์ ์ ํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง ํญ๊ณผ ๊ณต๋ฐฑ์ ์กฐํฉ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ํ์ฌ ๊ตฌํ์ด ์คํจํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ AST ๊ธฐ๋ฐ ์๋ฃจ์
๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค.
eslint ๊ตฌํ์์ ์ํ๋ AST ์์ ์ค ์ ์ด๋ ์ผ๋ถ๋ typescript์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ง์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์๋ฃจ์ ์ ์์ฑํ๋ ๋ฐ ๋๋ฌด ์ด๋ ต์ง ์์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ์ ํ์ฌ ๊ตฌํ์ด ์ด๊ฒ์ด ์ ํ ์คํจํ๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
_๊ธฐ์ ์ ์ผ๋ก_ ๊ทธ๋ด ํ์๊ฐ ์์ต๋๋ค. align
๊ท์น์ ๊ทธ๋ฌํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ๋ฌผ๋ก indent
๊ท์น์์๋ AST๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋ด๊ฐ ์ ๊ฒฝ ์ฐ๋ ๊ฒ์ indent
์ align
์ผ๋ถ ์กฐํฉ์ผ๋ก ๋ฌธ์ ์ค๋ช
์ ์์ฑํ ๋ด์ฉ์ ๋ฌ์ฑํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
์ ๋ ฌ ๊ท์น์ ๊ทธ๋ฌํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๋ฉ์ง! ๋๋ ์์ค ์ฝ๋๋ฅผ ๊ฒ์ฌํ ๋ ๊ทธ๊ฒ์ ๋์ณค๋ค. ๋๋ ๊ฑฐ๊ธฐ์ ์ ์ ์ ์ฐ์๊ฑฐ์ผ. TBH, ๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ฐ๋ฅํ ํ ์์งํ๊ฒ ์ ์งํ๊ธฐ ์ํด ๊ธฐ์กด ๊ท์น์ ํ์ฉํ๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์๋ ๊ท์น์ ๊ณต๋ฐฑ ๋์ ์ฌ์ฉ ์ค์ธ ํญ์ ํฌ์ฐฉํ์ง๋ง ์๋ชป๋ ์์ ๊ณต๋ฐฑ์ ํฌ์ฐฉํ์ง ์์ต๋๋ค. 2๋ฅผ ๋ค๋ฅธ ์ซ์๋ก ๋ณ๊ฒฝํ ์ ์์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. tslint 5.5.0์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
"indent": [true, "spaces", 2],
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? (๋๊ตฐ๊ฐ๊ฐ ์ด๋ฏธ ์์ ์์ ์ ํ๊ณ ์์ง ์๋ค๋ฉด ์๋ํด ๋ณผ ์ํฅ์ด ์์ต๋๋ค. )
@mDibyo ๊ฐ์ธ์
@mDibyo ์ด๊ฒ์ ์ง์ ์ด ์์์ต๋๊น?
๋ถ๋ถ์ ์ผ๋ก ๊ตฌํํ์ต๋๋ค. ์์ฑํ๊ณ ์ฃผ๋ง์ PR ์ฌ๋ฆฌ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค
๋ด ํ๋ก์ ํธ์ tslint-plugin-prettier ์ ํจ๊ป ๋ ์์ ํ์์ ์ฌ์ฉํ๊ธฐ ์์ํ ์ดํ๋ก ์ด ๋ฌธ์ ๊ฐ ์ ์๊ฒ ๋ ๋ฎ์ ์ฐ์ ์์๊ฐ ๋์๋ค๋ ์ ์ ๋ฏธ๋ฆฌ ์๋ ค๋๋ฆฌ๊ณ ์ถ์์ต๋๋ค. ํฅํ ๊ธฐ๋ณธ ์ ๊ณต ๊ตฌ์ฑ์์ ๋ ์์ ๊ฒ์ ๋ํ ๋ ๋ง์ ๊ณต์ ์ง์์ ์ถ๊ฐํ๊ณ ์ด์ ๋ฐ๋ผ ํ์๊ณผ ๊ด๋ จ๋์ง ์์ ํต์ฌ ๊ท์น์ ์ด์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด์ Prettier๋ ๋ชจ๋ ๋ผ์ธ์ ๊ฐ์ฅ ๋ง์ ์ฝ๋๋ฅผ ๋ง์ถ๋ ค๊ณ ๋ ธ๋ ฅํฉ๋๋ค.
๋น์ ์ด ๊ทธ๊ฒ์ ์ํ์ง ์๋๋ค๋ฉด?
์ธ์ ๋๋น๋ฅผ 120์ผ๋ก ์ค์ ํ๋ฉด ์์ ๊ฒ์ด ์ง๋์น๊ฒ ์กฐ๋ฐํ๊ฑฐ๋ ๋ฐ๋์งํ์ง ์์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ๋ก์ ํธ์์ 120์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ํ ๋ ๋ค๋ฅธ ์ข ์์ฑ์ ๋๋ค. ๋๋ ์ผ๋ฐ TSLint ๊ท์น์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํธํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ผ๋ฐ TSLint ๊ท์น์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํธํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@glen-84 ๋ค, ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋์ TSLint์์ ๋ชจ๋ ์์ ๊ท์น์ ์ ๊ฑฐํ๊ณ ์ธ๋ถ ํฌ๋งทํฐ์ ์์ ํ ์์ํด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. Prettier๋ ๋ถ๋ช ํ ๋ ๋จ์ ์ด๋ฉฐ ๋ชจ๋ ์ฌ๋์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ์ ํํ์ง๋ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฌ์ ํ PR์ ์ํด ์ด๋ ค ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ฌด์จ ์ผ์ด?
๋ด ํ๋ณด๊ฐ ์งํ ์ค์ด๋ฉฐ ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ ํ ์๊ฐ์ด ํ์ํฉ๋๋ค. @cyberhck
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ๊ณง ๋ณํฉ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค :slightly_smiling_face:
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์๋ง๋ ์ฐ๋ฆฌ๋ typescript-formatter ์ ์ง ๊ด๋ฆฌ์์๊ฒ ๋ช ๊ฐ์ง API๋ฅผ ๋
ธ์ถํ๋๋ก ์์ฒญํ ์ ์์ต๋๊น? ํจํค์ง๋ tslint.json
ํ์ผ์ ์ค์ ์ ๋ฐ๋ผ ์ ์ฒด ์์ค ํ์ผ์ ํ์์ด ์ด๋ฏธ ์ง์ ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ TSLint์ ์์ ํ๋ก๊ทธ๋จ ์ค์ ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋์์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฌธ์ ๋ ๋ค์ฌ์ฐ๊ธฐ ํฌ๊ธฐ๊ฐ ๊บผ์ ธ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ ์๋ชป๋ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ์คํจ๊ฐ ๋ณด๊ณ ๋๋ค๋ ๊ฒ์ ๋๋ค.
@adidahiya ์๋ชป๋ ๋ค์ฌ์ฐ๊ธฐ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ ์ ์์ต๋๋ค. ๊ท์น์ space/4๋ก ์ค์ ํ๊ณ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ:
export function foo() {
return 123;
}
๋๋
export function foo() {
<tab>return 123;
}
์ค๋ฅ๋ฅผ ๋ค์ ๋ณด๊ณ ํ์ง ์์ต๋๋ค. ๊ทํ์ ์๋ ์๊ฒฌ์ ๋ฐ๋ฅด๋ฉด ์๋ชป๋ ๊ณต๋ฐฑ ๋ฌธ์์ธ ๊ฒฝ์ฐ ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
์ด์ ๋ํ ์ง์ ์ด ์์ต๋๊น? ๊ทธ๋ฅ ๋ฌผ์ด๋ด ๐
์กฐ์ธ? ๋ ์์๊ฒ ์ฌ์ฉํ์ธ์.
๋๊ตฌ๋ ์ง tslint-eslint-rules๋ฅผ ์ฌ์ฉํด
@jscharett tslint-eslint-rules๋ ter-indent
๊ท์น๊ณผ ํจ๊ป ์๋ํฉ๋๋ค. ๋ถํํ๋ JSX ๋ค์ฌ ์ฐ๊ธฐ๋ ๋ค๋ฃจ์ง ์์ต๋๋ค ...
์ฌ๊ธฐ์ ์์ ์ ํฌ๋ง์ด ์์ต๋๊น?
์ด ๋ฒ๊ทธ๋ v5.10.0์์ ์์ง ์์ ๋์ง ์์์ต๋๋ค.
๋๋ TSLint๊ฐ Prettier๋ฟ๋ง ์๋๋ผ JS ์ฝ๋์ ํ์์ ์ง์ ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๋ณต์กํ ๋ฌธ์ ์ธ๋ฐ ํ๋ฆฌํฐ์ด๊ฐ ๋๊ตฌ๋ณด๋ค ์ ํ์์ต๋๋ค. ํนํ ํ๋ก์ ํธ์์ ๋ ๋๊ตฌ๋ฅผ ๋์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ์ถฉ๋์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ํด TSLint์ ์์กดํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค...
ํธ์ง: ์ด ๋ฌธ์ ๊ฐ _์ด๋ป๊ฒ_ ๋ณต์กํ์ง์ ๋ํ ๋ ๋์ ์์ด๋์ด๋ฅผ ์ป์ผ๋ ค๋ฉด ์ด PR์ ๊ฒํ ํ๊ฑฐ๋ Prettier ์์ค ์ฝ๋๋ฅผ ์ดํด๋ณด์ญ์์ค. ์ด ๋ฐ๋ชจ๊ฐ "๋ณต์กํ" ๊ฒ์ผ๋ก ๋๊ปด์ง์ง ์๋๋ค๋ฉด PR ๐์ผ๋ก ์ด ํ๋ก์ ํธ๋ฅผ ๋์์ฃผ์ธ์!
@aervin ๋๋ ์ฌ๊ธฐ์ ๋์ํ์ง ์๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ ์๊ฐ์ 2๊ฐ์ ํ๋ก์ ํธ๋ ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Prettier๋ ํ์ํ ๋ฒ์ฃผ์ ์ํ๋ ๋ฐ๋ฉด TSLint๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ๋ ๊ฐ๊น์ต๋๋ค. ์, TSLint๋ ์ผ๋ถ ๊ท์น์ ๋ํ ํ์ ์ง์ ์ ์ํํ ์ ์์ง๋ง ๋ฆฐํฐ๋ก์์ ์๋๋ ๋ชฉ์ ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ก ๋์๊ฐ๋๋ค.
Prettier์ ์์กดํ๋ ๊ฒ์ ๋ฌธ์ ์ ์ ๊ทธ๊ฒ์ด ๋ ๋จ์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ๊ทธ ์คํ์ผ์ ๋์ํ๋ค๋ ๊ฒ์ ๋๋จํ ์ผ์ด์ง๋ง, ๊ทธ๋ ์ง ์๋ค๋ฉด ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น? ์ฐ๋ฆฌ๋ ๋ชจ๋ JSLint๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋๋ฌด ๋ ๋จ์ ์ด์ด์ ๋ชจ๋ ๋ถํํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ JSHint์ JSCS๊ฐ ๋ฑ์ฅํ์ฌ ์ฐ๋ฆฌ์๊ฒ ์ฝ๊ฐ์ ์ ์ด ๊ถํ์ ์ฃผ์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ํ๋ฌ๊ทธ ์ค ํ๋ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก "์์ "ํ ์ ์๋ @eslint ์ ๊ฐ์ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ๊ฐ๊ฒ ๋์์ต๋๋ค.
๋๋ Prettier๊ฐ ํ๋ฅญํ ํ๋ก์ ํธ๋ผ๊ณ ํ์ ํ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก ๊ทธ๊ฒ์ ํ ๋ฐ์ง ๋ค๋ก ๋ฌผ๋ฌ๋ ๊ฒ์ผ๋ก ๋ด ๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ์ ํต์ ๊ถ์ ๋นผ์๊ณ ์์ต๋๋ค. TSLint๋ ์ฝ๋๋ฅผ "์์ "ํ ํ์๊ฐ ์์ต๋๋ค. ๋ฌธ์ ์ธ ๊ฒฝ์ฐ ๋ฌธ์ ๋ก ํ๋๊ทธ๋ฅผ ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋๋ ์ด ๋ฌธ์ ๊ฐ ๋ณต์กํ๋ค๋ ๊ฒ์ ์์ฌํ์ง ์์ง๋ง eslint๋ ๊ทธ๊ฒ์ ํด๊ฒฐํ์ต๋๋ค. ์๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ท์น; ๊ทธ๊ฒ์ ๊นจ๊ธฐ ์ํด ๋ฌด์์ด ๋ฐ๋ ์์ต๋๊น?
@jscharett ์น์ ํ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋ ์ด๋ฌํ ํ๋ก์ ํธ๊ฐ ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๊ฑฐ๋ _ํด์ผ ํฉ๋๋ค_ ๋์ํฉ๋๋ค. ๋ด ์ฃผ์ฅ์ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ๊ทธ๋ฌํ ๋ชฉ์ ์ผ๋ก ์ ํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ค์ฌ์ฐ๊ธฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ Prettier๋ฅผ ๋งก๊ธฐ๊ณ ๋จ์ํํ ์ ์๋ ํ์ดํ ๊ธฐ๋ฅ์ ๋ํด ๊ฐ๋ฐ์์๊ฒ ๊ฒฝ๊ณ ํ๋ TSLint๋ฅผ ๋จ๊ฒจ ๋์.
์ ๋ Prettier๊ฐ ๋ ๋จ์ ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ๋๋ ์คํ๋ ค Prettier์ ๋ํด ๊ทธ๊ฒ์ ์ข์ํฉ๋๋ค. ์ด์ ์ฐ๋ฆฌ ํ์ ๋๊ตฌ์ ํ์ํ ์๊ฒฌ์ด ๋ ํฉ๋ฆฌ์ ์ธ์ง ๋ ผ์ํ ํ์๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ Prettier :laughing: ์ ๋ํด ๋ถํํ ์ ์์ต๋๋ค.
ํธ์งํ๋ค:
์๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ท์น; ๊ทธ๊ฒ์ ๊นจ๊ธฐ ์ํด ๋ฌด์์ด ๋ฐ๋ ์์ต๋๊น?
์ฒซ ๋ฒ์งธ ๋ฌธ์ ์ฃผ์์ ์ด ๊ท์น์ด ์๋ํ ๋๋ก ์๋ํ ์ ์ด ์๋ค๊ณ ๋ฏฟ๊ฒ ํฉ๋๋ค.
๋๋ Prettier๊ฐ ํ๋ฅญํ ํ๋ก์ ํธ๋ผ๊ณ ํ์ ํ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก ๊ทธ๊ฒ์ ํ ๋ฐ์ง ๋ค๋ก ๋ฌผ๋ฌ๋ ๊ฒ์ผ๋ก ๋ด ๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ์ ํต์ ๊ถ์ ๋นผ์๊ณ ์์ต๋๋ค.
๋ด ๊ฒฝํ์ ์ ๋ Prettier๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ๊น์ง ์์ ๊ท์น์ ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ โโ๋ฐ ๊ด์ฌ์ด ์๋ค๊ณ ์๊ฐํ์ต๋๋ค... ๊ทธ๋ฆฌ๊ณ ์ผ๋ง ์ง๋์ง ์์ ์์์ด ์ง์ ๋๋ ํน์ ๋ฐฉ์์ ๋ํด ๊ทธ๋ค์ง ์ ๊ฒฝ ์ฐ์ง ์๋๋ค๋ ์ฌ์ค์ ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋ค์ ์ผ๊ด๋๊ฒ ํฌ๋งท๋์์ต๋๋ค. ๋ ์ด์ ๊ทธ๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง _do_ ํ๊ธฐ๋ฅผ ์ํ๋ ๊ฒ๋ณด๋ค ์ ์ ์ผ๋ก ๋ด๊ฐ ์ํ๋ ๊ฒ์ ์ง์คํ๋ ๊ฒ์ ์์ฒญ๋ ์ธ์ง ๋ถํ์ ๋๋ค.
tslint๋ ์ด๋ฏธ ์์ ๋ฒ์ฃผ์ ์ํ๋ ๋ค๋ฅธ ํญ๋ชฉ์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ณ์ ์ด๋ฆ๊ณผ ์ฐ์ฐ์ ์ฌ์ด์ ์ ๋ ฌ, ๋๊ดํธ ์คํ์ผ ๋๋ ๊ณต๋ฐฑ์ ์ ์ฉํฉ๋๋ค. ๋ํ prettier์ ๊ฐ์ ๋ ๋จ์ ์ธ ์๋ฃจ์ ์ ์์กดํ์ง ์๊ณ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ธํ ์ ์๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
๋ ์ ์ ํ ๋ก ๊ณผ ๋ ๋ง์ ํ๋ณด๊ฐ ํ์ํฉ๋๋ค. ๐ ๐
๊ฐ์ธ์ @ffxsam
๋ด ์๊ฒฌ์ ๋๋ถ๋ถ ํ๋ก ๋บจ์ ๋ง์์ต๋๋ค. ์์ด ๋ฌธ์ ๊ฐ 1 ๋ ์ด ๋์๊ณ ์ง์ ์ด ์์๋์ง ๊ถ๊ธํฉ๋๋ค. ๋ชจ๋๊ฐ Linting ๋ Prettier์ ๋ํด ๋ ผ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@ffxsam tslint๊ฐ ts ๋ถ๋ถ์ ๊ดํ ๊ฒ์ธ์ง ์๋๋ฉด lint ๋ถ๋ถ์ ๊ดํ ๊ฒ์ธ์ง์ ๋ํ ๋ ผ์์ด ์๊ธฐ ๋๋ฌธ์
์ ํจํ ์ง์ ์
๋๋ค. TSLint/ESLint์ ๊ฒน์น๋ ๋ถ๋ถ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์๋ํ์ง ์๋ indent
์ต์
์ด ์๋ค๋ ์ฌ์ค์ ๋๊ฐ ์ ์ ์๋๋ก ๋ง๊ฐ์ง ๊ฒ์
๋๋ค. TSLint ์ฝ๋๋ฒ ์ด์ค์ ์ต์ํ ์ฌ๋์ด ์์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋น ๋ฅด๊ณ ์ฌ์ด ๊ฒ ๊ฐ์ต๋๋ค...?
x spaces
=> y spaces
์์ ์ ํฌํํ์ธ์. ์ด๊ฒ์ ์ฐ๋ฆฌ ํ์ฌ๊ฐ ๋งค์ฐ ๋ง์ด ์์กดํ๋ ๊ธฐ๋ฅ์
๋๋ค. ์ด๊ฒ์ ๊ณ ์น์ง ์๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
@ffxsam ์ด ๋ฌธ์ ๋ฅผ ๊ฑฐ์ 1๋ ๋์ ์ง์ผ๋ณด๊ณ ์์ต๋๋ค. ๋ค ์ค๋๋ง์ ๋๋ค. ํ์ง๋ง
๋น ํ๋ก์ ํธ์์ ์ฌ์ ํ ์ฌํ ๊ฐ๋ฅ
https://github.com/dimaShin/tslint-reproduce-2814
@dimaShin๋ , ์๊ฐ์ ๋ด์ด ์ฌํ ๊ฐ๋ฅํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ ์ด๋ฏธ ์ด ๋ฌธ์ ๋ฅผ ์๊ณ ์์ผ๋ฉฐ ์ฌ์์ฐ์ ๋ฌธ์ ๊ฐ ๋์ง ์์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋จ์ง ์์ ์ต์ ์ด ์๋ ์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ง๋ง ๊ทธ๊ฒ์ ๋์๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ์ง๋๋ฒ์ ์ฌ๋๋ค์ด ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ธํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ํญ๋ชฉ์ ๋ํด tslint๋ฅผ ํ์ธํ๊ธฐ ์ํด prettier๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ต๋๋ค.
๊ทธ๊ฒ์ด ๋น์ ์๊ฒ ์ ํฉํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ์ ์๊ฒ๋ ํ์คํ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ํ ์ด ํน์ ์ต์
์ ๋ํด .editorconfig
๋ฅผ ์ฌ์ฉํ๊ณ ์ด๊ฒ์ด ํด๊ฒฐ๋๋ฉด ๋์ค์ tslint๋ก ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๊ฐ์ ๋ด์ด ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ฃผ์ ์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. :)
๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ ๋ต์ ๊ฒฐ์ ํฉ์๋ค. ์ฐธ๊ณ ๋ก eslint์์ ์ฌ์ฉํ๋ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ์ ๋ต์ ์ด์ ์ฃผ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ตฌ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ํน์ ๋ฐฉ์์ผ๋ก ์ค์ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๋ ๋จ์ ์ ๋๋ค. ์ฝ๋๊ฐ ์ค๋ก ๊ตฌ๋ถ๋๋ ๋ฐฉ์๊ณผ ๋ ๋ฆฝ์ ์ธ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ธํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
๋ ผ์ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ฌํญ:
@stifflerus ๋ํ ๊ท์น์ {} ๋ธ๋ก์ด ์๋ if/for/arrow ํจ์์ ํจ๊ป ์๋ํด์ผ ํฉ๋๋ค.
@maximelkin ๋ ๋ฒ์งธ ์ค์ ๋น์ ์ด ์ค ์๊ฐ ๋ค์ฌ ์ฐ๊ธฐ๋์ง ์์์ต๋๊น? ์ ์๋ ์ ๋ต์ด ์คํจํ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ํ ์ ์์ต๋๊น?
if(this) that(); //okay because it's all one line
if(this)
that(); //also okay because the second line is indented
let x = () => f(); //okay because it's all one line
let y = () =>
f(); // I have not seen any code but like this but it would be okay
์ด๊ฒ์ด ์์ ๋๋ฉด ๊ต์ฅํ ๊ฒ์ ๋๋ค.
๋ค์ฌ์ฐ๊ธฐ ๊ท์น์ ์ ์ฉํ๋ ๊ฒ๋งํผ ๊ทผ๋ณธ์ ์ธ ๊ฒ์ด ์ฌ์ ํ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋ฏฟ์ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด 2018๋ ์๋ ๊ทธ๋ฌํ ts-code๋ฅผ ๋ฆฐํธํ ๋ฐฉ๋ฒ์ด ์์๊น์?
const x = {
a: 1,
b: 2,
}
๋๋ฅผ ์ํด ์ผํ๋ค
./.eslintrc.ts.js
:
module.exports = {
'parser': 'typescript-eslint-parser',
'parserOptions': {
'ecmaVersion': 6,
'sourceType': 'module',
'ecmaFeatures': {
'jsx': true,
}
},
'plugins': [
'react',
],
'rules': {
'indent': ['error', 2],
},
}
yarn eslint --no-eslintrc --config ./.eslintrc.ts.js --ext .tsx src
๊ฐ๋์ ๋ค์ฌ ์ฐ๊ธฐ ๋ฌธ์ ์ ๋ํด ์ฐพ์ ์๋ฃจ์
์ ๋ค์ ๋จ๊ณ์์ ๋ ์์๊ฒ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค.
npm install --save-dev tslint-plugin-prettier ๋ ์์ tslint-jasmine-rules
tslint.json ํธ์ง -->
` "๊ท์น ๋๋ ํ ๋ฆฌ": [
"node_modules/codelyzer",
"node_modules/tslint-plugin-prettier",
"node_modules/tslint-jasmine-rules/dist"
],
"ํ์ฅ": "tslint-plugin-prettier",
"๊ท์น": {
"๋ ์์๋ค": ์ฌ์ค,
// ์ฌ๊ธฐ์ ์ํ๋ ๊ท์น ์ถ๊ฐ`
๊ทธ๋ฆฌ๊ณ package.json์ --> ์ถ๊ฐ
" ,"๋ ์์๋ค": {
"singleQuote": ์ฌ์ค,
"์ธ์ ๋๋น": 140,
"์ธ๋ฏธ": ์ฌ์ค,
"bracketSpacing": ์ฐธ,
"arrowParens": "ํญ์",
"ํ์": "ํ์
์คํฌ๋ฆฝํธ"
}"
์ด๊ฒ์ ๊ฑฐ์ ๋ชจ๋ ์ฌ๋๋ค์ด ๋งค์ผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ๋ฌธ์ ์ ๋ ๋ง์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ฌ๋ฌ๋ถ, tslint-eslint-rules์์ ์ ๊ณตํ๋ ter-indent ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
"ter-indent": [ true, 4, { "SwitchCase": 1 }]
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค. ๊ฑด๋ฐฐ!
@hiteshaleriya ๊ทธ๊ฒ์ ๋ด๊ฐ ์ ์ ๋์ ๋ด ํ๋ก์ ํธ์์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด์ง๋ง ์ค์ ๋ก ์ค๋ฅ๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ๋ฅ ์นจ๋ฌต์ํค๋ ๊ฒ์
๋๋ค... ์ฌ๊ธฐ ๋ด tslint.json
.
{
"extends": "tslint-config-airbnb",
"rules": {
"ter-indent": ["error", "spaces", 4],
"no-unused-vars": ["warn"],
"no-multi-spaces": false,
"no-console": false,
"max-line-length": false,
"import-name": false
}
}
๋ค์์ ๊ฒฝ๊ณ ๋ ์ค๋ฅ ์์ด ์๋ฃ๋ ๊ด๋ จ ์์ ๋๋ค.
function retrieveAndSetConfig(): Promise<any> {
return new Promise((resolve, _) => {
// ^ 2 spaces, expected 4
const ghe = new GHEUtils();
// ^ 4 spaces, expected 8
// ...
}
๋ํ ํญ์ ์ฌ์ฉํ ๋ ์ค๋ฅ๊ฐ ํ์๋์ง ์์ต๋๋ค(4๊ฐ์ ๊ณต๋ฐฑ์ด ์๋ ๊ฒฝ์ฐ ์๋์ ์ผ๋ก ์ค๊ณ๋ ๊ฒ์ผ ์ ์์).
@SpencerKaiser ์๋์ ๊ฐ์ด ter-indent ๊ท์น์ ์ ๋ฐ์ดํธํ ํ ์๋ํด ์ฃผ
"ter-indent": [true, 4]
๋๋ ๋น์ ์ ์๋ฅผ ์๋ํ๊ณ ๋ด ๋์์ ์์๋๋ก ์๋ํฉ๋๋ค(์ค๋ฅ ๋ฐ์).
@hiteshaleriya ๋๋ฌด ๋นจ๋ฆฌ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ๋ฐ๋ผ์ ์ด์ ์์๋๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง(๐) --fix
๋ก ์ค๋ฅ๋ฅผ ์์ ํ์ง ์์ต๋๋ค. ์ด๋ค ์์ด๋์ด?
@SpencerKaiser --fix ๋ช ๋ น์ ๋ ๋ฒ ์คํํด ๋ณผ ์ ์์ต๋๊น? ์ฒ์์๋ ์ฒซ ๋ฒ์งธ ์ค๋ง ๋ค์ฌ์ฐ๊ณ ๋ ๋ฒ์งธ์๋ ๋๋จธ์ง๋ฅผ ๋ค์ฌ์๋๋ค(์์ ์ฝ๋์ ๊ฒฝ์ฐ). ์ด์ํด ๋ณด์ด์ง๋ง ์๋ํ์ง ์์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ ๊ณ ํ์ญ์์ค.
@hiteshaleriya ๊ทธ๋์ ๋ช ๊ฐ์ง ๊ด์ฐฐ ... ๋ค์ ์คํํ ํ์๊ฐ ์์์ต๋๋ค. ๋๋ต n/4
๋ฒ ์คํํด์ผํ์ต๋๋ค. ์ฌ๊ธฐ์ n
๋ ๊ณต๋ฐฑ์ ๋ค์ฌ ์ฐ๊ธฐ ๊ธธ์ด์
๋๋ค. ํ๋ก์ ํธ์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋ค์ฌ์ฐ๊ธฐ๋ ์ค ยฏ\_(ใ)_/ยฏ
๋ง์นจ๋ด ๋ชจ๋ ๋ง์น ํ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋ค์ฌ์ฐ๊ธฐ ์ค๋ฅ๋ฅผ ๊ฑด๋๋ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
class Something {
function myFunc() {
const myThing = {
wat: 1,
wattt: 5, // 9 spaces, expected 12
};
}
}
์ ๋ค์ฌ ์ฐ๊ธฐ ์์ค๊น์ง I ์๋ง ๊ฒฝ์ฐ const
(๋ผ์ธ 17) 0 ๊ณต๊ฐ, ๊ทธ๊ฒ์ ๋๋จธ์ง๋ ์ค๋ฅ ํ๋๊ทธ๊ฐ ๋๋ ๋จ์ด์ ธ ๋๊ฐ ๋์ ๊ณต๊ฐ์ผ๋ก ๋ผ์ธ์ _excluding_ --fix
:
ERROR: 17:1 ter-indent Expected indentation of 8 spaces but found 0.
ERROR: 18:1 ter-indent Expected indentation of 4 spaces but found 12.
ERROR: 20:1 ter-indent Expected indentation of 0 spaces but found 8.
--fix
์ ์ฒซ ๋ฒ์งธ ํจ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
const myThing = {
wat: 1,
wattt: 5,
};
๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ํจ์ค:
const myThing = {
wat: 1,
wattt: 5,
};
์๊ฐ??
@shubich ๋๋ ๊ฒฐ๊ตญ ๋๊ฐ์ ์ง์ ํ์ด...
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
@MaKCbIMKo ๋ด๊ฐ ์ดํดํ๋ ํ, ์ ์ฒด ํ์ eslint ๋ฐฉ๋ฌธ typescript-eslint๋ฅผ ํตํฉํ๊ธฐ ์ํด ์ด๋ํ ๊ฒ์ด๋ฉฐ ๊ฐ๊น์ด ์ฅ๋์ tslint๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ฏ๋ก ์ง๊ธ์ ์ด ๊ท์น์ ๋ฌด์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค(๋๋ tslint-config-prettier ์ฌ์ฉ )
์ด ์์ ์ ๋ณต์ก์ฑ๊ณผ ํ๋ก์ ํธ ๋ฐฉํฅ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ๋ง๊ฐ: #4534
typescript-eslint์ ESLint ๊ท์น์ ์ ์๊ฒ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค(#4534 ์ฐธ์กฐ):
module.exports = {
"env": {
"browser": true,
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2019,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
},
"project": "./tsconfig.json",
},
"plugins": ["@typescript-eslint"],
"rules": {
"@typescript-eslint/indent": ["error", 2] // or ["error", "tab"]
}
}
๋งํฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๐ค ์์! ๐ TSLint๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๐ typescript-eslint๋ก ์ ํ ํด์ผ
๐ ์ด ์ด์๋ ๋ ์ด์์ ๋ถํ์ํ ํ ๋ก ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๊ทธ๊ณ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ๐
PS tslint-config-prettier - TypeScript๋ฅผ _format_ํ๊ธฐ ์ํด TSLint์ ๊ฐ์ _linters_ ์ฌ์ฉ์ ์ค๋จํ์ญ์์ค. Prettier ์ ๊ฐ์ _formatter_๊ฐ ๋ ์ ์ํํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์๋ ๊ท์น์ ๊ณต๋ฐฑ ๋์ ์ฌ์ฉ ์ค์ธ ํญ์ ํฌ์ฐฉํ์ง๋ง ์๋ชป๋ ์์ ๊ณต๋ฐฑ์ ํฌ์ฐฉํ์ง ์์ต๋๋ค. 2๋ฅผ ๋ค๋ฅธ ์ซ์๋ก ๋ณ๊ฒฝํ ์ ์์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. tslint 5.5.0์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.