Vue
Vue + eslint + prettier
frontChoi
2022. 2. 24. 08:26
๋ฐ์ํ
๐น VSCode์์ Eslint Prettier ์ค์น
Eslint + Prettier ์ค์น๋ฅผ ํด์ค๋ค.
๐ eslint ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm i eslint eslint-config-prettier eslint-plugin-prettier eslint-plugin-vue --save-dev
๐ก ํ๋ก์ ํธ ๋ฃจํธ๋ ๋ฒจ์ ๋ฆฐํธ ์ค์ ํ์ผ .eslintrc.js ์ถ๊ฐ
// eslint-disable-next-line no-undef
module.exports = {
// ํ์ฌ eslintrc ํ์ผ์ ๊ธฐ์ค์ผ๋ก ESLint ๊ท์น์ ์ ์ฉ
root: true,
// ์ถ๊ฐ์ ์ธ ๊ท์น๋ค์ ์ ์ฉ
extends: [
'eslint:recommended',
'plugin:vue/essential',
'prettier',
'plugin:prettier/recommended',
],
// ์ฝ๋ ์ ๋ฆฌ ํ๋ฌ๊ทธ์ธ ์ถ๊ฐ
plugins: ['prettier'],
// ์ฌ์ฉ์ ํธ์ ๊ท์น ์ถ๊ฐ
rules: {
'prettier/prettier': [
'error',
// ์๋ ๊ท์น๋ค์ ๊ฐ์ธ ์ ํธ์ ๋ฐ๋ผ prettier ๋ฌธ๋ฒ ์ ์ฉ
// https://prettier.io/docs/en/options.html
{
singleQuote: true, // '' ์ฌ์ฉ
semi: true,
useTabs: true,
tabWidth: 2,
trailingComma: 'all',
printWidth: 80,
bracketSpacing: true,
arrowParens: 'avoid',
},
],
// eslint-disable-next-line no-undef
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
},
};
๐ settings.json ์ค์ ์ถ๊ฐ
์๋์ฐ ๊ธฐ์ค์ผ๋ก F1์ ๋๋ฅด๊ณ settings.json์ ๋๋ฅด๊ณ ์๋์ ๋ด์ฉ์ ์ถ๊ฐํด์ค๋ค.
"editor.formatOnSave": false,
"editor.formatOnType": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.alwaysShowStatus": true,
"eslint.workingDirectories": [
{"mode": "auto"}
],
"eslint.validate": [
"javascript",
"typescript"
],
๐ ์ถ๊ฐ์ ์ผ๋ก "Delete `โ` eslint (prettier/prettier)" ์๋ฌ๊ฐ ๋ฐ ๊ฒฝ์ฐ
์ค๋ฅธ์ชฝ ํ๋จ์ CRLF๋ฅผ ํด๋ฆญ ํ ํ LF๋ฅผ ํด๋ฆญํ๋ฉด ์๋ฌ๊ฐ ์ฌ๋ผ์ง๋ค.
๋ฐ์ํ