ESLint
ESLint๋ ์๋ฐ์คํฌ๋ฆฝํธ, JSON, ๋งํฌ๋ค์ด์ ์ ์ ๋ถ์ํ๋ ๋ฆฐํธ(Lint) ๋๊ตฌ๋ค.
๊ตฌ์ฑ
ESLint๋ eslint.config.(js|mjs|cjs)
ํ์ผ๋ก ๊ตฌ์ฑ(configuration)์ ์ ์ํ ์ ์๋ค. ๊ธฐ์กด ๊ตฌ์ฑ ๋ฐฉ์์ .eslintrc.(js|json|yaml|yml)
ํ์ผ์ ์ฌ์ฉํ๋ค.
ํ๋ซ(flat) ๊ตฌ์ฑ์ v8.21.0 (2022๋
)์ ๋์
๋ ์๋ก์ด ๊ตฌ์ฑ ์์คํ
์ด๋ค. ๊ธฐ์กด ๊ตฌ์ฑ ๋ฐฉ์์ ๋ณต์ก์ฑ ๋ฌธ์ ์ ๋ํ ๋์์ผ๋ก ์ ์๋์๊ณ , v9์์๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์คํ
์ด ๋์๋ค. ํ๋ซ ๊ตฌ์ฑ์ ๋ณด๋ค ๋จ์ํ๊ณ ์ ์ฐํ๋ค. ๊ธฐ์กด์ ๊ตฌ์ฑ ์์คํ
์ ์์์ ์๋ eslintrc
ํ์ผ์ ์์ํ๋ ๊ณ์ธตํ ๊ตฌ์กฐ์๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ๊ตฌ์ฑ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋๋ ์์ธ์ด ๋์๋ค. ํ๋ซ ๊ตฌ์ฑ ๋ฐฉ์์ ์์น์ ์ผ๋ก ํ๋์ ๊ตฌ์ฑ ํ์ผ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์์ ์ด๋ค ๊ตฌ์ฑ ํ์ผ์ด ์๋์ง ์ฐพ์๋ณด์ง ์์๋ ๋๋ค.
ํ๋ซ ๊ตฌ์ฑ ์์คํ ์ ๋ฐฐ์ด์ ๋ด๊ธด ๊ฐ ๊ตฌ์ฑ ๊ฐ์ฒด๋ฅผ ๋ณํฉํด ํ๋์ ๊ตฌ์ฑ์ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ๋ค์ ์ค๋ ๊ตฌ์ฑ ๊ฐ์ฒด๋ ์์ ์ค๋ ๊ตฌ์ฑ ๊ฐ์ฒด๋ฅผ ๋ฎ์ด์ด๋ค.
export default [
{
rules: {
'no-console': 'error',
},
},
{
rules: {
'no-console': 'off',
},
},
];
์์ ๊ฐ์ด ๊ตฌ์ฑ์ ์์ฑํ๋ฉด no-console
๊ท์น์ด off
๋ก ์ค์ ๋๋ค. ๋ํ files
ํค๋ก ํด๋น ๊ตฌ์ฑ ๊ฐ์ฒด๊ฐ ์ ์ฉ๋ ํ์ผ์ ์ง์ ํ ์ ์๋ค. files
ํค๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ(*.(js|mjs|cjs)
)์ ๊ท์น์ด ์ ์ฉ๋๋ค.
export default [
{
rules: {
'no-console': 'error',
},
},
{
files: ['*.test.js'],
rules: {
'no-console': 'off',
},
},
];
์์ ๊ฐ์ด ๊ตฌ์ฑ์ ์์ฑํ๋ฉด *.test.js
ํ์ผ์์๋ no-console
๊ท์น์ด ๋นํ์ฑํ๋๊ณ , ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์์๋ ํ์ฑํ๋๋ค. ์ฃผ์ํ ์ ์ ์์ ๋์ค๋ ๊ตฌ์ฑ ๊ฐ์ฒด์ ์ ์๋ files
ํค๊ฐ ๋ค์ ๋์ค๋ ๊ตฌ์ฑ ๊ฐ์ฒด์๋ ์ ์ฉ๋๋ค๋ ์ ์ด๋ค. ๋ง์ฝ ์๋์ ๊ฐ์ด ์์๋ฅผ ๋ฐ๊พธ๋ฉด *.test.js
ํ์ผ์ ๋ํด no-console
๊ท์น์ด error
๋ก ์ค์ ๋๋ค.
export default [
{
files: ['*.test.js'],
rules: {
'no-console': 'off',
},
},
{
rules: {
'no-console': 'error',
},
},
];
๋ฐ๋ผ์ ๋ โ๊ตฌ์ฒด์ ์ธโ ๊ตฌ์ฑ ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ฐฐ์นํด์ผ ํ๋ค. ๊ตฌ์ฑ์ ์ ์ฉ ์์๋ฅผ ๋น๋กฏํด ์ ์ฉ๋ ๊ตฌ์ฑ์ ์์ธํ ์ ๋ณด๋ฅผ ์ดํด๋ณด๋ ค๋ฉด eslint --inspect-config
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋๋ค.
8.x ๋ฒ์ ESLint CLI๋ ์คํ ์งํ ๊ธฐ์กด ๊ตฌ์ฑ ๋ฐฉ์์ ์ฌ์ฉํ๋์ง, ํ๋ซ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋์ง ํ์
ํ๋ค. ์ด๋ฅผ ์ํด ๋ช
๋ น์ ์คํํ ๋๋ ํ ๋ฆฌ๋ถํฐ ์์ ๋๋ ํ ๋ฆฌ๋ก ์ฌ๋ผ๋ฉด์ eslint.config
ํ์ผ์ ์ฐพ๋๋ค. ๋ง์ฝ ์์ ๋๋ ํ ๋ฆฌ์ eslint.config
ํ์ผ์ด ์๋ค๋ฉด ํ๋ซ ๊ตฌ์ฑ ๋ชจ๋๋ก ๋์ํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ์กด ๊ตฌ์ฑ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ํ์ฌ ๋๋ ํ ๋ฆฌ์ eslintrc
ํ์ผ์ด ์์ด๋ ์์ ๋๋ ํ ๋ฆฌ์ eslint.config
ํ์ผ์ด ์์ผ๋ฉด ํ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์ปดํจํฐ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ eslint.config
ํ์ผ์ด ์์ผ๋ฉด ์์คํ
์ ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ํ๋ซ ๊ตฌ์ฑ ๋ฐฉ์์ผ๋ก ๋์ํ๊ฒ ๋๋ค.
๊ธฐ์กด์๋ ๋ฆฐํ ํ ํ์ผ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฌ์ฑ ํ์ผ์ ์ฐพ์ ์ ์ฉํ์ง๋ง, ํ๋ซ ๊ตฌ์ฑ ๋ฐฉ์์์๋ ๋ช ๋ น์ ์คํํ ์์น๋ถํฐ ์์ํด ์์ ๋๋ ํ ๋ฆฌ๋ก ์ฌ๋ผ๊ฐ๋ฉด์ ๊ตฌ์ฑ ํ์ผ์ ์ฐพ๋๋ค. ๋ชจ๋ ธ๋ ํฌ์์๋ ๊ฐ ์ํฌ์คํ์ด์ค๋ง๋ค ๊ตฌ์ฑ ํ์ผ์ ๋ฐ๋ก ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ํ๋ซ ๊ตฌ์ฑ์์๋ ๋ช ๋ น์ ์คํํ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ตฌ์ฑ ํ์ผ์ด ์ ์ฉ๋ ์ ์์ด ์ฃผ์ํด์ผ ํ๋ค. ๋ฆฐํ ํ ํ์ผ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ์ฑ ํ์ผ์ ํ์ํ๋๋ก ํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ํผ์ณ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
$ eslint --flag unstable_config_lookup_from_file example.js
์ฐธ๊ณ ์๋ฃ
- ESLintโs new config system, Part 1: Background
- ESLintโs new config system, Part 2: Introduction to flat config
- ESLintโs new config system, Part 3: Developer preview