-
Notifications
You must be signed in to change notification settings - Fork 4
๐ฐ ์ปค์คํ ESLint ๋ง๋ค๊ธฐ
ํ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ESLint ์ค์ ์ ๋ง๋ค๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๋ค๋ฃจ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฝ๋ ํ์ง์ ํฅ์์ํค๊ณ ๊ฐ๋ฐ ํจ์จ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
ESLint๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์คํฌ๋ฆฝํธ ์ฝ๋์ ํ์ง์ ์ ์งํ๊ธฐ ์ํ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. ์์ค ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ฝ๋์ ๋ฌธ๋ฒ๊ณผ ๋ ผ๋ฆฌ์ ์ค๋ฅ, ์คํ์ผ ๋ฌธ์ ๋ฑ์ ๋ถ์ํ์ฌ ๊ฒฐํจ์ ์ฌ์ ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
- ๋ฌธ๋ฒ ๊ฒ์ฌ: ์ฝ๋์ ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ์๋์ผ๋ก ๊ฐ์ง
- ์คํ์ผ ๊ฐ์ด๋ ์ค์: ํ์์ ์ ํ ์ฝ๋ ์คํ์ผ ๊ท์น์ ์ ์ฉ
- ํ๋ฌ๊ทธ์ธ ์ง์: ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ํตํด ๊ธฐ๋ฅ ํ์ฅ
- ์๋ ์์ : ์ผ๋ถ ์ค๋ฅ์ ์คํ์ผ ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ์์
ESLint๋ ์ฝ๋์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์ ์ฌ์ ์ธ ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ๋ฐ๊ฒฌํ์ฌ ์ฝ๋ ํ์ง์ ๋์ ๋๋ค.
ํ์ ๊ฐ์ ์ฝ๋ ์คํ์ผ๊ณผ ๊ท์น์ด ์ผ๊ด๋๋ฉด ํ์ ์ด ์ํํด์ง๋๋ค. ESLint๋ ํ ์ ์ฒด๊ฐ ๋์ผํ ๊ท์น์ ๋ฐ๋ฅด๋๋ก ๊ฐ์ ํ์ฌ ์ฝ๋๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
ESLint๋ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ์ฌ ์ฝ๋๊ฐ ๋ณํฉ๋๊ธฐ ์ ์ ์๋์ผ๋ก ๊ฒ์ฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค๋ฅ๊ฐ ํฌํจ๋ ์ฝ๋๊ฐ ๋ฉ์ธ ๋ธ๋์น์ ํฉ์ณ์ง๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
ESLint ์ค์ ํ์ผ์ JSON ๋๋ JavaScript ํ์์ผ๋ก ์์ฑํ ์ ์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ .eslintrc.json ๋๋ .eslintrc.js ํ์ผ๋ก ์์นํฉ๋๋ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
{
"env": {
"browser": true,
"es2021": true},
"extends": ["eslint:recommended"],
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"rules": {
"indent": ["error", 2],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "single"],
"semi": ["error", "always"]
}
}- env: ์ฝ๋๊ฐ ์คํ๋ ํ๊ฒฝ์ ์ง์ (์: ๋ธ๋ผ์ฐ์ , Node.js)
-
extends: ๊ธฐ์กด์ ESLint ์ค์ ์ ํ์ฅ (์:
eslint:recommended) - parserOptions: ECMAScript ๋ฒ์ ๊ณผ ๋ชจ๋ ์์คํ ๋ฑ์ ์ค์
- rules: ์ ์ฉํ ๊ฐ๋ณ ๊ท์น๊ณผ ๊ทธ ๊ฐ๋๋ฅผ ์ ์
๋ชจ๋
ธ๋ ํฌ์ ๊ฐ์ ๋ค์ค ํ๋ก์ ํธ ํ๊ฒฝ์์ ESLint ์ค์ ํ์ผ์ ์์ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด root ์ต์
์ ์ฌ์ฉํฉ๋๋ค.
- root: true: ์ด ์ค์ ํ์ผ์ ์ต์์๋ก ๊ฐ์ฃผํ๊ณ ์์ ๋๋ ํ ๋ฆฌ์ ์ค์ ์ ๋ฌด์
- root: false: ์์ ๋๋ ํ ๋ฆฌ์ ์ค์ ์ ์์๋ฐ์
์์: ํ๋ก์ ํธ ์ต์์ ๋๋ ํ ๋ฆฌ์ .eslintrc.json:
{
"root": true,
"extends": ["eslint:recommended"],
"rules": { /* ๊ณตํต ๊ท์น */ }
}
https://www.npmjs.com/package/eslint-plugin-jsk-rules
https://github.com/jsk3342/eslint-plugin-jsk-rules


-
Prettier, ESLint ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ - velog
Prettier์ ESLint์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ฐ ์ค์ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ ๊ธ์ ๋๋ค. -
PoiemaWeb - ESLint
ESLint๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ํ์ง์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃฌ ๊ธฐ์ ๋ธ๋ก๊ทธ์ ๋๋ค. -
์ฐ์ํํ์ ๋ค ๊ธฐ์ ๋ธ๋ก๊ทธ - ์ฐ๋ฆฌ ํ์ ์ํ ESLint, Prettier ๊ณต์ ์ปจํผ๊ทธ ๋ง๋ค์ด๋ณด๊ธฐ
ํ ํ์ ์ ์ํด ESLint์ Prettier์ ๊ณต์ ์ค์ ์ ๋ง๋๋ ๊ณผ์ ์ ์ค๋ช ํฉ๋๋ค. -
์ฐ์ํํ ํฌ - [10๋ถ ํ ํฌํก] ๋ํ์ ESLint
ESLint์ ๊ฐ๋ ๊ณผ ํ์ฉ๋ฒ์ ์งง๊ฒ ๋ค๋ฃฌ ์ฐ์ํํ ํฌ ์์์ ๋๋ค. -
Kakao Tech - ESLint ์กฐ๊ธ ๋ ์ ํ์ฉํ๊ธฐ
Kakao Tech ๋ธ๋ก๊ทธ์์ ESLint๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. -
Medium - ESLint ์๊ณ ์ฌ์ฉํ๊ธฐ
ESLint์ ์ค์ ๊ณผ ํ์ฉ๋ฒ์ ๋ค๋ฃฌ Medium์ ๊ธฐ์ ํฌ์คํธ์ ๋๋ค. -
๋๋ง์ ESLint ๋ฃฐ ๋ง๋ค์ด๋ณด๊ธฐ - yceffort
ESLint ๋ฃฐ์ ์ปค์คํฐ๋ง์ด์งํ์ฌ ์์ ๋ง์ ๊ท์น์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. -
์ ํ์ ๊ธฐ์ ๋ธ๋ก๊ทธ - ESLint ์ค์ ์ ๋๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด๋ณด์
ESLint ์ค์ ์ ๊ณต์ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ์ํ๊ณ ๋ชจ๋ ธ๋ ํฌ์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค. -
ESLint ๊ณต์ ๋ฌธ์ - Shareable Configurations
ESLint์ ๊ณต์ ๊ฐ๋ฅํ ์ค์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ณต์ ๋ฌธ์์ ๋๋ค.
- ๐ ์น ์์ผ์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ (feat. WS vs Socket.io)
- ๐คธโโ๏ธ ๋น์ ์ด ์ปดํฌ๋ํธ๋ก ๋ ๋๋ง ์ต์ ํ ํ๊ธฐ
- ๐ทโโ๏ธ Shared Worker๋ก ํด๋ผ์ด์ธํธ์ ์์ผ ํต์ ๊ฐ์ ํ๊ธฐ
- ๐จโ๐ฉโ๐งโ๐ฆ ๋ค์ค ํญ์์ ํ๋์ ์์ผ์ ๊ณต์ ํ ์ ์์๊น?
- ๐ [Socket.io] ํด๋ผ์ด์ธํธ์ ์ค์๊ฐ ์ฑํ ๊ตฌํ๊ธฐ
- ๐ฌ ์๋ฒ๋ฅผ docker swarm ์ผ๋ก ๊ด๋ฆฌํด๋ณด์
- ๐ฌ ์ปจํ ์ด๋๋ผ๋ฆฌ env ๊ณต์ ํ๊ธฐ
- ํ์ฅ์ฑ์ ๊ณ ๋ คํ ์๋ฒ ์ค๊ณ
- ncp ์๋ฒ ์ ํ
- ์ฑํ ์๋ฒ์ Redis ๋ฅผ ์ด ์ด์
- โ NestJS๋ฅผ ํตํ ์ผ๊ด์ ์ธ ์์คํ ์ค๊ณ
โ๏ธ ์ธ๋ถ์ ์ฌ์ฉ์๊ฐ Object Storage์ ์ ๊ทผํ์ง ๋ชปํ๋ ๊ถํ ์ ์ด- ๐ฆข nestjs์์ swagger ์ฌ์ฉํด๋ณด๊ธฐ
- ๐ NestJS Nginx Request Data Size ๋ฌธ์
- ๐ ๋ค์๋ณด๊ธฐ๋ฅผ ์ํ NodeโMediaโServer, FFMpeg ๋ถ์
- ๐ฆ ํจํค์ง ๋งค๋์ ๋ฐ ๋ชจ๋ ธ๋ ํฌ ์ ํ๊ธฐ
- ๐ฐ ์ปค์คํ ESLint ๋ง๋ค๊ธฐ
- ๐คบ ์ปค์คํ react ์ค๋ํซ ๋ง๋ค๊ธฐ
- ๐ธ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด ๊ตฌํ: ํจ๋ฉ ํ ๊ธฐ๋ฒ
- ๋ฆฌ์กํธ ํ ํผ ๋ฅ๋ค์ด๋ธ