๐ฎESLint + Prettier์์ํ๊ธฐ
// npmํ๊ฒฝ์ด ์กด์ฌํ๋ cra๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ํ์ ์์
$ npm init -y
// eslint ์ค์น
$ npm install eslint prettier --save-dev
// or
$ yarn add -D eslint prettier
// eslint ์์ ์ค์
$ npx eslint --init
//or
$ yarn eslint --init
eslint --init์ ํด์ฃผ๋ฉด ์ง๋ฌธ์ด ์ฌ๋ฌ๊ฐ์ง๊ฐ ๋์ค๋๋ฐ
์ธํ ํ๋ ค๋ ํ๊ฒฝ์ ๋ง์ถฐ์ ๋ต๋ณํ๋ฉด ๊ทธ์ ๋ง๊ฒ ์ธํ ํ๊ฒ ๋๋ค.
$ yarn eslint --init
yarn run v1.22.10
$ /home/identity/hanghae99/redux-toolkit-tutorial/node_modules/.bin/eslint --init
You can also run this command directly using 'npm init @eslint/config'.
Need to install the following packages:
@eslint/create-config
Ok to proceed? (y) y
โ How would you like to use ESLint? · problems
โ What type of modules does your project use? · esm
โ Which framework does your project use? · react
โ Does your project use TypeScript? · No / Yes
โ Where does your code run? · browser
โ What format do you want your config file to be in? · JavaScript
Local ESLint installation not found.
The config that you've selected requires the following dependencies:
eslint-plugin-react@latest eslint@latest
โ Would you like to install them now with npm? · No / Yes
Installing eslint-plugin-react@latest, eslint@latest
vscode extension
๋งํฌ : https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
์ถ์ฒ : https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
ESLint config ์ต์ ์ดํด๋ณด๊ธฐ
airbnb ์ฝ๋ ์คํ์ผ ์ ์ฉํ๊ธฐ
airbnb ์ฝ๋ ์คํ์ผ์ ์ ์ฉํ๋ ค๋ฉด airbnb์์ ์ฌ์ฉํ๋ eslint-plugin์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ก ํ์ํ ํจํค์ง์ ๋ฒ์ ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
$ npm info "eslint-config-airbnb@latest" peerDependencies
{
eslint: '^7.32.0 || ^8.2.0',
'eslint-plugin-import': '^2.25.3',
'eslint-plugin-jsx-a11y': '^6.5.1',
'eslint-plugin-react': '^7.28.0',
'eslint-plugin-react-hooks': '^4.3.0'
}
์ค์น๋์ด ์์ง ์๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ก ํ์ํ ํจํค์ง๋ค์ ํ๋ฒ์ ์ค์นํ ์ ์์ต๋๋ค.
$ npx install-peerdeps --dev eslint-config-airbnb
eslint-config-airbnb์ eslint-config-airbnb-base์ ์ฐจ์ด์
eslint-config-airbnb์ ๊ท์น์๋ react ๊ท์น์ด ์์ผ๋ฉฐ, eslint-config-airbnb-base๊ท์น์๋ react ๊ท์น์ด ์กด์ฌํ์ง ์๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค. react ๊ท์น์ด ํ์์๋ค๋ฉด eslint-config-airbnb-base๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
๐ESLint document
์ธํฐ๋ท์ ๋์๋ค๋๊ณ ๋ง์ด๋ค ์ฐ๋ eslint ํ ํ๋ฆฟ์ ์ธ๋ ์ฐ๋๋ผ๋ ๋ญ๊ฐ ๋ญ์ง๋ ์๊ณ ์จ์ผํ๋๋ฐ
eslint ๊ท์น๋ค์ด ๋๋ฌด ํํธํ๋์ด ์์ด์ ์ฐพ๊ธฐ๊ฐ ๋๋ฌด ํ๋ญ๋๋ค.
๊ฒ๋ค๊ฐ ์๋ ์ ๋ง๋ค์ด์ง ํ ํ๋ฆฟ์ด๋ผ๋ฉด deprecated rule์ด ์กด์ฌํ ์๋ ์์ต๋๋ค.
plugin๋ ๋๋ฌด ๋ง๊ณ ๊ท์น๋ค๋ ๋๋ฌด ๋ง์์ ๋ ํผ๋ฐ์ค๋ฅผ ํ๋ฒ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
๊ท์น๋ค์ readmeํ์ผ์ด๋ ๊ณต์๋ฌธ์์ ๋์์์ผ๋ plugin์ ๋ง๊ฒ ๊ท์น์ ์ฐพ์๋ณด๋ ๊ฒ ์ข์ต๋๋ค.
ESLint ๊ณต์๋ฌธ์
eslint rule์ ๋ํด์ ๋์์๋ eslint ๊ณต์๋ฌธ์
airbnb
๊ฐ์ฅ ์ ๋ช ํ ๋ฆฐํธ ์ค์ ์ธ airbnb.
eslint-plugin-import
eslint-plugin-react
eslint-plugin-jsx-a11y
๐Prettier document
prettier option ๋ฌธ์
.prettierrc์ ์ ๋ ฅํ๊ฒ ๋ ์ต์ ๋ค์ ๋ํ ์ ๋ณด๋ prettier ๊ณต์๋ฌธ์์ ์ ๋ถ ๋์ ์์ต๋๋ค.
eslint-plugin-prettier
Prettier์ ๊ท์น์ eslint์ ์ ์ฉ์ํฌ ์ ์๊ฒ๋ ํด์ฃผ๋ plugin์ ๋๋ค.
eslint-config-prettier
prettier ์ ์ค์ ์ค eslint ์ ์ค์ ๊ณผ ์ถฉ๋์ด ๋๋ ์ค์ ๋ค์ ๋นํ์ฑํ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
โถReference
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ๋ชจ๋ ๊ธฐ๋ฅ์ผ๋ก ์ดํด๋ณด๋ ์๋ฐ์คํฌ๋ฆฝํธ (0) | 2022.12.19 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๋ถ์๊ธฐ (0) | 2022.12.04 |
[Javascript] ์ด๋ฒ์์ผ๋ง๋ก regex๋ฅผ ์จ๋ณด์ (0) | 2022.12.03 |
[Javascript] Array filter ๋ง๊น๋๊ฒ ์จ๋ณด๊ธฐ (0) | 2022.11.13 |