본문 바로가기
FrontEnd/Next.js

[ Next.js ] Next.js v12 프로젝트 세팅하기

by ウリ김영은 2023. 12. 24.

Setup

1. Next.js 12버전 설치하기

npx create-next-app@12.3.4

 

2. TypeScript 설치하기

 

터미널을 통해 tsconfig.json 파일 생성 후,

touch tsconfig.json

 

yarn dev 실행

yarn dev

 

TypeScript를 사용하려고 하지만 필요한 패키지가 설치되어 있지 않은 것 같다는 메세지와 함께 typescript에 필요한 패키지를 설치 해준다.

 

3. eslint, prettier 설치 (eslint는 이미 설치되어 있음)

yarn add -D prettier eslint-plugin-prettier eslint-config-prettier eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/parser @typescript-eslint/eslint-plugin
// .eslintrc

{
  "root":true,
  "env": {
    "browser": true, 
    "es2020": true
  },
  "extends": [
    "react-app",
    "eslint:recommended",
    "plugin:react/recommended", // 리액트 추천 룰셋
    "plugin:react/jsx-runtime",
    "plugin:@typescript-eslint/recommended",
    "plugin:react-hooks/recommended",
    "plugin:prettier/recommended",
    "prettier/@typescript-eslint"
  ],
  "ignorePatterns": ["dist", ".eslintrc"],
  "parser": "@typescript-eslint/parser",
  "plugins": ["react-refresh","@typescript-eslint","react-hooks", "simple-import-sort", "prettier"],
  "rules": {
    "react-refresh/only-export-components": [
      "warn",
      { "allowConstantExport": true }
    ],
    "import/extensions": [
      "off"
    ],
    "@typescript-eslint/semi": "off",
    "@typescript-eslint/space-before-function-paren": "off"
  }
}
// .eslintignore

node_modules
dist
//.prettierrc

{
	"tabWidth": 2,
	"useTabs": true,
	"printWidth": 100,
	"singleQuote": true,
	"trailingComma": "all",
	"bracketSpacing": true,
	"semi": false,
	"arrowParens": "avoid",
	"endOfLine": "lf",
	"parser": "typescript"
}

4. vitest 설치

https://nextjs.org/docs/pages/building-your-application/testing/vitest

 yarn add -D vitest @vitejs/plugin-react jsdom @testing-library/react @vitejs/plugin-react

 

이런 경고문이 떠서 vite 도 추가 설치해준다.

 yarn add vite@5.0.0

 

//package.json
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "test": "vitest" //추가하기
  },

 

5. emotion 설치

yarn add -D @emotion/react @emotion/styled    

 

 

optimizes styles by compressing and hoisting 하여 더 좋은 개발자 경험을 선사한다

yarn add --dev @emotion/babel-plugin

 

 

6. 추가 라이브러리 설치

yarn add swiper react-device-detect @notionhq/client @smakss/react-scroll-direction 

 

 

 

 

// package.json

{
  "name": "nextjsnotionportfolio",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "test": "vitest"
  },
  "dependencies": {
    "@notionhq/client": "^2.2.14",
    "@smakss/react-scroll-direction": "^3.1.4",
    "next": "14.0.4",
    "react": "18.2.0",
    "react-device-detect": "^2.2.3",
    "react-dom": "18.2.0",
    "swiper": "^11.0.5",
    "vite": "5.0.0"
  },
  "devDependencies": {
    "@emotion/react": "^11.11.1",
    "@emotion/styled": "^11.11.0",
    "@testing-library/react": "^14.1.2",
    "@types/node": "20.10.5",
    "@types/react": "18.2.45",
    "@typescript-eslint/eslint-plugin": "^6.15.0",
    "@typescript-eslint/parser": "^6.15.0",
    "@vitejs/plugin-react": "^4.2.1",
    "eslint": "^8.56.0",
    "eslint-config-next": "14.0.4",
    "eslint-config-prettier": "^9.1.0",
    "eslint-plugin-import": "^2.29.1",
    "eslint-plugin-prettier": "^5.1.1",
    "eslint-plugin-react": "^7.33.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "jsdom": "^23.0.1",
    "prettier": "^3.1.1",
    "typescript": "5.3.3",
    "vitest": "^1.1.0"
  }
}

https://snupi.tistory.com/203