dukDukz
React ) vite + ts + eslint 본문
1. Vite 로 React 프로젝트 생성
yarn create vite
yarn
프로젝트 생성시 React + typescript로 설정
2. Eslint 의존성 설치
yarn add -D eslint vite-plugin-eslint eslint-config-react-app
vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import eslint from 'vite-plugin-eslint';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(), eslint()],
})
3. Eslint 설정
npx eslint --init
yarn remove eslint-config-xo eslint-config-xo-typescript
yarn add -D eslint-config-airbnb eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y
typescript로 설정할때 popular style 중에 xo를 선택한다.
airbnb 스타일로 사용하고 싶은 경우 위와 같이 의존성 삭제 및 추가 설치를 해주면 된다.
.eslintrc.cjs
module.exports = {
env: {
browser: true,
es2021: true,
jest: true,
},
extends: [
'airbnb',
'plugin:@typescript-eslint/recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: [
'react',
'@typescript-eslint',
],
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
},
rules: {
indent: ['error', 2],
'no-trailing-spaces': 'error',
curly: 'error',
'brace-style': 'error',
'no-multi-spaces': 'error',
'space-infix-ops': 'error',
'space-unary-ops': 'error',
'no-whitespace-before-property': 'error',
'func-call-spacing': 'error',
'space-before-blocks': 'error',
'keyword-spacing': ['error', { before: true, after: true }],
'comma-spacing': ['error', { before: false, after: true }],
'comma-style': ['error', 'last'],
'comma-dangle': ['error', 'always-multiline'],
'space-in-parens': ['error', 'never'],
'block-spacing': 'error',
'array-bracket-spacing': ['error', 'never'],
'object-curly-spacing': ['error', 'always'],
'key-spacing': ['error', { mode: 'strict' }],
'arrow-spacing': ['error', { before: true, after: true }],
'react/react-in-jsx-scope': 'off',
'import/prefer-default-export': 'off',
'no-console': 'off',
'import/no-extraneous-dependencies': ['error', {
devDependencies: [
'**/*.test.js',
'**/*.test.jsx',
'**/*.test.ts',
'**/*.test.tsx',
],
}],
'import/extensions': ['error', 'ignorePackages', {
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
}],
'react/jsx-filename-extension': [2, {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
}],
'jsx-a11y/label-has-associated-control': ['error', { assert: 'either' }],
},
};
.vscode/settings.json
{
"editor.rulers": [
80
],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"trailing-spaces.trimOnSave": true
}
'웹 개발 > React' 카테고리의 다른 글
Tanstack react-query (0) | 2023.07.05 |
---|---|
React) vite + react (js) + eslint (0) | 2023.07.04 |
전 후 값으로 변경하는 버튼 (배열 안에서 전 후 값으로 이동하기) (0) | 2023.05.31 |
[React Router v6] createBrowserRouter 레이아웃 여러개 (0) | 2023.04.06 |
[error] @parcel/transformer-js: Browser scripts cannot have imports or exports. (0) | 2023.03.02 |