최근 토이 프로젝트 리팩토링을 시작했는데 회사에서 쓰던 개발환경과 달라 불편함을 느꼈다.
그래서 최대한 비슷하고 편한 환경을 셋팅하면서 정리하는 글.
ESLint는 Javascript 코드에서 발견된 문제 패턴을 식별하기 위한 정적 코드 분석 도구이다. 코드 퀄리티를 보장해준다. 대부분의 프로그래밍 언어에는 컴파일하는 과정에서 수행되는 Linter가 기본적으로 내장되어 있다. 그러나 역동적이고 느슨한 언어인 JavaScript에는 Linter가 존재하지 않는다. 왜냐하면 JavaScript는 별로의 컴파일 과정이 없고, Node나 Browser에서 바로 실행되기 때문이다.
$ yarn add -D eslint
아래는 현재 토이프로젝트에서 사용하고 있는 설정이다.
module.exports = {
// parser : 각 코드 파일을 검사할 파서
parser: '@typescript-eslint/parser', // typescript
plugins: ['@typescript-eslint', // typescript
'prettier'],
extends: [ // 해당 플러그인에서 사용하는 rule set이 적용된다.
'airbnb',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
],
rules: {
'linebreak-style': 0,
'import/prefer-default-export': 0,
'prettier/prettier': 0,
'import/extensions': 0,
'no-use-before-define': 0,
'import/no-unresolved': 0,
'import/no-extraneous-dependencies': 0,
'no-shadow': 0,
'react/prop-types': 0,
'react/react-injsx-scope': 'off',
'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
'prefer-destructuring': ['error', { object: true, array: false }],
'jsx-a11y/no-noninteractive-element-interactions': 0,
'react/jsx-props-no-spreading': 'off',
'react/no-array-index-key': 'off',
'no-underscore-dangle': 'off',
'no-param-reassign': 'off',
'@typescript-eslint/no-empty-function': 'off',
},
};
Prettier는 코드를 정렬해 주는 Code Formatter 중 하나이다. 코드 스타일을 깔끔하게 혹은 통일되도록 도와준다. 설정한 ESLint 룰에 따라 Prettier가 자동으로 format(줄 바꿈, 공백, 들여 쓰기 등)을 잡아준다.
reference