올해의 목표 중에 공식문서와 친해지기
가 있기도 하고 😅
새로 다시 시작할 겸 정리하는 Next.ts
!! 🙃
공식문서 읽으며 기초 다지기를 시작해본다.🤗
Next.js
는 React
프레임워크Next.js
앱 만들기Next.js
를 시작하려면 Node.js 버전 10.13 이상이 필요하다// JS로 시작한다면 ⬇️
npx create-next-app@latest
// TS로 시작한다면 ⬇️
npx create-next-app@latest --typescript
입력하면 프로젝트 이름 입력하고, 프로젝트가 생성된다
프로젝트가 생성되었다면 실행시켜보자!
npm run dev
http://localhost:3000/ 접속해서 확인하기
따란~!!! 👏👏👏
내 입맛에 맞는 초기셋팅 시작하기.
.next
: npm run build
후 생성되는 파일 모음 폴더
pages
: 파일 이름으로 라우터 생성
_app.tsx
: 각 페이지별로 공통적으로 쓰는 부분에 대한 리펙토링을 해주는 곳?!.
props로 Component라는 걸 받는데 이게 각 페이지에서 리턴하는 컴포넌트이다.
모든 페이지에서 쓰는 스타일, 레이아웃, 메타데이터 등을 import.
index.tsx
: 메인 프로그램이라고 할 수 있다. 여기에서 각 컴포넌트를 조합하여 렌더링하고 실제 표시한다.
public
: 이미지, 아이콘 등
styles
: 스타일링 파일 모음
VSCode에 ESLint
, Prettier Extension
이 설치 되어 있어야 한다
해당 명령어로 ESLint
, prettier
그 외 사용하고 싶은 여러 플러그인들을 설치하자.
// ESLint와 Prettier를 함께 사용하기 위해서 설치
npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier
// 다양한 플러그인 함께 설치
npm i -D eslint eslint-config-airbnb eslint-config-next eslint-config-prettier eslint-plugin-babel eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-prettier eslint-plugin-react eslint-plugin-react-hooks prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser
// or
yarn add --dev eslint eslint-config-airbnb eslint-config-next eslint-config-prettier eslint-plugin-babel eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-prettier eslint-plugin-react eslint-plugin-react-hooks prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser
VSCode 설정에서
Format On Save
를 체크하면 저장할 때마다 바뀐다
그 후 .eslintrc.json
, .prettierrc.json
파일을 프로젝트 root 폴더에 생성한 후 eslint
, prettier
설정하기
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
// "eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"react",
"@typescript-eslint",
"react-hooks"
],
"rules": {
"react/react-in-jsx-scope" : "off",
"react-hooks/exhaustive-deps": "warn"
}
}
{
"singleQuote": true,
"parser": "typescript",
"semi": true,
"useTabs": true,
"printWidth": 80
}