들어가기 전에
버전정보
- VSCode@1.60.2
- Next.js@^11
- prettier@^2.4.1
- eslint@8.0.1
- typescript@4.4.4
VSCode에서 Next.js Typescript, Prettier, ESLint 통합하는 과정은 아래와 같습니다.
- VSCode 기본 설정
- Next.js 설치
- ESLint 기본구조 개선
- Prettier 플러그인 설치 및 ESLint 연동, 자동 포맷팅 적용
- ESLint + Typescript 연동
VSCode 기본 설정
세팅을 위해 비주얼 스튜디오 코드(VSCode, Visual Studio Code) 기본 설정을 진행하시기 바랍니다.
- VSCode용 ESLint 플러그인 설치
- VSCode 설정에 아래 구성 추가
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
Next.js 설치
Next.js 기본 강의가 아니기 때문에 자세한 설명은 생략하고 넘어가겠습니다. Next.js와 타입스크립트를 함께 사용할 것이기 때문에 초기설정에 타입스크립트 옵션을 넣고 세팅합니다.
npx create-next-app@latest --typescript
# or
yarn create next-app --typescript
create-next-app 명령어를 활용하면 번거로운 설정 과정 없이 모든 것을 자동으로 설정되어 새로운 Next.js 애플리케이션이 생성됩니다.
다음은 일부 ESLint 구성과 함께 기본 제공됩니다. 이 ESLint 규칙으로 프로젝트가 생성됩니다.
{
"extends": "next/core-web-vitals"
}
개선하기
기본 구성은 프로젝트 루트의 .eslintrc 파일에서 찾을 수 있습니다.
{
"extends": ["next", "next/core-web-vitals"]
}
eslint:recommended 를 활성화합니다. 전체 규칙 확인
{
"extends": [
"eslint:recommended",
"next",
"next/core-web-vitals"
]
}
필요한 전역 변수(env)를 정의합니다.
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"next",
"next/core-web-vitals"
]
}
코드 포맷팅 추가하기 (Prettier 연동)
Prettier 패키지를 설치합니다.
yarn add -D prettier eslint-plugin-prettier eslint-config-prettier
프로젝트의 루트에 .prettierrc 파일을 만들고 몇 가지 규칙을 정의합니다.
{
"trailingComma": "none",
"semi": false,
"singleQuote": true
}
ESLint extends에 prettier 플러그인을 추가합니다.
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"next",
"next/core-web-vitals",
"plugin:prettier/recommended" // 항상 마지막에 위치시킵니다
]
}
이제 파일을 저장할 때 자동으로 코드가 포맷팅됩니다!
타입스크립트 연동하기
TypeScript와 ESLint를 연동하여 사용하려면 몇 가지 플러그인을 설치해야 합니다. next에서 제공하는 내장 파서를 사용하면 파서 버전과 @typescript-eslint/eslint-plugin 문서에 따라 제어할 수 없습니다.
yarn add -D @typescript-eslint/parser @typescript-eslint/eslint-plugin
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser", // parser 추가!
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended", // typescript eslint 추가!
"next",
"next/core-web-vitals",
"plugin:prettier/recommended" // always at the end
]
}
포맷팅 테스트
'개발 > Next.js' 카테고리의 다른 글
Next.js 커스텀 서버 환경에서 cannot find module 에러 해결 방법 feat. typescript (0) | 2023.03.29 |
---|---|
[Next.js] AWS Amplify withSSRContext the user is not authenticated 이슈 해결방법 (0) | 2022.05.10 |
SWR useSWRInfinite fallback 처리하는 방법 (1) | 2022.04.30 |
Next.js, Redux toolkit, next-redux-wrapper 연동하는 방법 feat. typescript (0) | 2022.01.30 |
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.