-
[ESLint] import/order로 import 순서 정렬하기 (Vite + Typescript)기타 2025. 3. 20. 10:06
eslint에서 import/order 를 적용하기 위해서는 아래 라이브러리 설치가 필요하다.
$ npm install eslint-plugin-import --save-dev $ npm install eslint-import-resolver-typescript --save-dev
vite 로 react프로젝트를 설치하면 (2025년 3월 `vite: 5.4.10`, `@vitejs/plugin-react: 4.3.3` 버전)
tsconfig.app.json, tsconfig.json, tsconfig.node.json 총 세개의 tsconfig 파일이 만들어 지는데,
이 때, tsconfig.json에서 references로 tsconfig.app.json과 tsconfig.node.json을 가지고,
include 옵션을 사용하면 오류가 발생한다.
나는 storybook을 사용하고 있기에 include 옵션이 꼭 필요했는데,
이는 tsconfig.app.json과 tsconfig.node.json 파일에 설정해주면 된다.
# tsconfig.app.json 파일 { // ... "include": ["src/**/*", ".storybook/**/*"] }
라이브러리를 설치하고, tsconfig 파일들을 모두 설정했다면
eslint.config.js 파일을 아래와 같이 수정한다.
import js from "@eslint/js"; import eslintImport from "eslint-plugin-import"; import reactHooks from "eslint-plugin-react-hooks"; import reactRefresh from "eslint-plugin-react-refresh"; import globals from "globals"; import tseslint from "typescript-eslint"; export default tseslint.config( { ignores: ["dist"] }, { extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ["**/*.{ts,tsx}"], languageOptions: { ecmaVersion: 2020, globals: globals.browser, }, plugins: { "react-hooks": reactHooks, "react-refresh": reactRefresh, import: eslintImport, }, rules: { ...reactHooks.configs.recommended.rules, "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], "import/order": [ "error", { groups: ["builtin", "external", ["internal", "unknown"], "parent", "sibling", "index"], pathGroups: [ { pattern: "react", group: "external", position: "before", }, ], alphabetize: { order: "asc", caseInsensitive: true, }, "newlines-between": "always", }, ], }, settings: { "import/resolver": { typescript: { alwaysTryTypes: true, project: ["./tsconfig.app.json", "./tsconfig.node.json"], }, node: { paths: ["src"], extensions: [".js", ".jsx", ".ts", ".tsx"], }, }, }, languageOptions: { parserOptions: { project: ["./tsconfig.app.json", "./tsconfig.node.json"], sourceType: "module", }, }, }, );
여기서 중요한 부분은
1. rules > import/order
: 어떤 순서로 정렬할 것인지 지정하는 설정
: 참고 문서 (https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md)
2. settings > import/resolver
: @src/를 모듈로 정확히 인식하도록 설정
3. languageOptions > parserOptions
: include를 설정한 tsconfig 경로를 정확히 지정하는 것
이 때, settings > import/resolver 의 typescript > project와 languageOptions > parserOptions의 project 는 같아야 한다.
모두 설정한 후,
$ npx eslint . --fix
명령어를 실행하면, 모든 파일에 설정한 eslint 적용 완료!
import/order가 적용된 모습 '기타' 카테고리의 다른 글
[VSCode] ESLint codeActionsOnSave 가 정상적으로 동작하지 않음 (0) 2024.02.02 [ESLint] ReactJS(+TypeScript)에 맞게 설정하기 (0) 2022.11.01 [AWS] EC2 - 웹 콘솔 접속해서 사용하기 (0) 2022.09.01 [호기심과 글] Django와 uWSGI . uWSGI 는 왜 쓸까? (0) 2022.05.28 [VSCode] VSCode 업데이트 된 후 생긴 괄호 색상 없애는 방법 (0) 2022.05.28