๋ชจ๋ ธ ๋ ํฌ์์๋ ํจํค์ง ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ์ ์ํ์์ต๋๋ค.
์ด์ ๊ฐ์ ๊ท์น์ ๋ชจ๋๊ฐ ์ดํดํ๊ณ ์๋ค๊ณ ํ์ฌ๋ ์ค์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ESLint๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
ESLint๋ ํ๋ฌ๊ทธ์ธ์ eslint-plugin-์ด๋ผ๋ ์ด๋ฆ์ npm ํจํค์ง๋ฅผ ์ฐพ์์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ npm ๋ฐฐํฌ ๋๋ npm link๋ฅผ ํตํด์ ESLint ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐํฌ๋ link ์์ด ์ฌ์ฉํ๋ ค๋ฉด eslint-plugin-local์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
ESLint ์ฌ์ดํธ ์์ ํ๋ฌ๊ทธ์ธ ๊ตฌํ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ ์คํ์ ์๋์ ๊ฐ์ต๋๋ค.
ESLint์์ ํ์ผ์ ํ์ฑํ ๋ import์ ๋ฐ๊ฒฌํ๋ ๊ฒฝ์ฐ ImportDeclaration ํจ์๋ฅผ ํธ์ถํ๋ฏ๋ก ํด๋น ํจ์์ ๋ก์ง์ ๊ตฌํํฉ๋๋ค.
๊ตฌํํ ์ฝ๋๋ eslint-plugin-check-import์์ ํ์ธ ํ ์ ์์ต๋๋ค.
ESLint cli๋ฅผ ํตํด์ ์ ์ ๋์ํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์
์คํฌ๋ฆฝํธ paths๋ก ์ค์ ๋ import๋ intellij์์ ์๋ฌ๋ก ํ์๊ฐ ๋์ง ์์์ต๋๋ค.
์ด์ ๋ intellij๋ ๊ฐ์ฅ ๊ฐ๊น์ด ESLint ์ค์ ํ์ผ์ ์ฐพ์์ ๋ฐ์ํ๋ ๋ฌธ์ ์์ต๋๋ค.
์ฌ๋ฌ๊ฐ์ ESLint ์ค์ ํ์ผ๊ณผ tsconfig ํ์ผ์ด ์กด์ฌํ ๋์๋ ESLint์ ์์
๋๋ ํ ๋ฆฌ๋ฅผ ๋ช
์ํด์ฃผ์ด์ผ ํฉ๋๋ค. eslint -> manual eslint config -> working directory๋ฅผ ./์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋ฐ๊พธ์ด์ฃผ๊ณ ESLint ์๋ฌ๊ฐ visaul studio code์ intellij ๋ชจ๋ ์ ํ์๋์์ต๋๋ค.
์ด๋ฌํ ์ข
๋ฅ์ ESLint ํ๋ฌ๊ทธ์ธ์ @nx/eslint-plugin๊ณผ eslint-plugin-boundaries๊ฐ ๋ง์ด ์ฐ์
๋๋ค.
๊ทธ๋์ ์ง์ ๊ตฌํํ ๋์๋ eslint-plugin-boundaries ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ๊ฒ minimatch ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ง๋ค์์ต๋๋ค.
์ง์ ๊ตฌํํ ๊ฒ, nx, eslint-plugin-boundaries ์ค์ ๋ฌด์์ ์ฌ์ฉ ํ ์ง ๊ณ ๋ฏผํ๋ค๊ฐ
@nx/eslint-plugin๋ nx ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด์ ์์งํ๊ณ ์์ด์ ํ์ฌ ๋ด์์๋ nx๋ฅผ ์ฌ์ฉ ํ ์ ์์ด ๋ฐฐ์ ํ์๊ณ eslint-plugin-boundaries๋ ๋๋ฒ๊น
๋ชจ๋์ capture์ ๊ฐ์ ๊ธฐ๋ฅ๋ ์ ๊ณตํ์ฌ ์ด๊ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์์ต๋๋ค.
๊ฒฐ๊ตญ ์ง์ ๊ตฌํํ ๊ฒ์ ์ฌ์ฉํ์ง ์์์ง๋ง ๋์ ๊ณผ์ ์ ์ดํดํ๊ฒ ๋๋ ๊ฒ๋ง์ผ๋ก๋ ์ข์ ๊ฒฝํ์ด์์ต๋๋ค.