Skip to content

Latest commit

Β 

History

History
523 lines (396 loc) Β· 16.9 KB

README.ko-KR.md

File metadata and controls

523 lines (396 loc) Β· 16.9 KB

Next-Plate

Next-Plate Banner

πŸ¦Έβ€β™€οΈ μœ μš©ν•œ 툴이 ν¬ν•¨λœ Next.js ν…œν”Œλ¦Ώ


License MIT
Open Source Made with TypeScript Built with Love
Powered by Vercel


Bugs Maintainability Rating Quality Gate Status Reliability Rating Security Rating Vulnerabilities Renovate

Demo Desktop Demo Mobile

🌎 λ²ˆμ—­

English PortuguΓͺs Brasileiro Korean

클릭 λͺ‡ 번으둜 이 ν…œν”Œλ¦Ώμ˜ 볡사본을 λ°°ν¬ν•˜μ„Έμš”!

πŸ“– μ†Œκ°œ

이 ν…œν”Œλ¦Ώμ€ λ‹Ήμ‹ μ˜ λ‹€μŒ React ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ λͺ¨λ“  것과 JAMStack 의 λͺ¨λ“  λͺ¨λ²” 예제λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

이 ν…œν”Œλ¦Ώμ—λŠ” μ—¬λŸ¬ 폴더, μ½”λ“œ 예제 및 ꡬ성이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 README νŒŒμΌμ„ 포함해 자유둭게 νŽΈμ§‘ν•˜κ±°λ‚˜ μ‚­μ œν•˜μ„Έμš”!

μ›ν•˜λŠ”λŒ€λ‘œ μˆ˜μ •ν•˜κ³  μ¦κΈ°μ„Έμš”!

🌟 νŠΉμ§•

이 ν”„λ‘œμ νŠΈμ—λŠ” μ΅œμ‹  μ›Ή 개발 νˆ΄λ“€κ³Ό μ˜ˆμ‹œλ“€μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€!

ν”„λ ˆμž„μ›Œν¬

  • βš›οΈ Next.js – ν•˜μ΄λΈŒλ¦¬λ“œ 및 μ„œλ²„ λ Œλ”λ§μ„ μœ„ν•œ μ™„λ²½ν•œ React ν”„λ ˆμž„μ›Œν¬

데이터 κ°€μ Έμ˜€κΈ°

  • ✳️ React Query – Reactμ—μ„œ 비동기 데이터λ₯Ό κ°€μ Έμ˜€κ³  μΊμ‹±ν•˜κ³  μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•œ Hooks
  • ❇️ SWR (React Query의 λŒ€μ•ˆ) – 데이터λ₯Ό κ°€μ Έμ˜€κΈ°λ₯Ό μœ„ν•œ React Hooks 라이브러리
  • πŸ”„ Axios – λΈŒλΌμš°μ € 및 Node.js에 λŒ€ν•œ Promise 기반 HTTP ν΄λΌμ΄μ–ΈνŠΈ

μƒνƒœ 관리

  • 🐻 Zustand – λ‹¨μˆœν™”λœ ν”ŒλŸ­μŠ€(μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ ꡬ좕을 μœ„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜) 원칙을 μ‚¬μš©ν•œ μž‘κ³ , λΉ λ₯΄κ³ , ν™•μž₯ κ°€λŠ₯ν•œ μƒνƒœ 관리 μ†”λ£¨μ…˜
  • πŸ‘ react-use – ν•„μˆ˜ React Hook μ»¬λ ‰μ…˜

λ””μžμΈ μ‹œμŠ€ν…œκ³Ό μ• λ‹ˆλ©”μ΄μ…˜

  • 🎨 Chakra-UI – React 앱을 λΉŒλ“œν•˜κΈ° μœ„ν•œ λΉŒλ”© 블둝을 μ œκ³΅ν•˜λŠ” κ°„λ‹¨ν•œ λͺ¨λ“ˆμ‹ μ»΄ν¬λ„ŒνŠΈ 라이브러리
  • 🎞️ Framer Motion – React용 ν”„λ‘œλ•μ…˜ μ€€λΉ„ λͺ¨μ…˜ 라이브러리
  • ✨ React Icons – React ν”„λ‘œμ νŠΈμ— 자주 μ‚¬μš©λ˜λŠ” μ•„μ΄μ½˜ λͺ¨μŒ

폼 μœ νš¨μ„± 검사

  • πŸ“‹ React Hook Form – μ‚¬μš©ν•˜κΈ° μ‰¬μš΄ 검증을 톡해 μ„±λŠ₯, μœ μ—°μ„± 및 ν™•μž₯성이 λ›°μ–΄λ‚œ 폼
  • 🚨 Yup – 폼 μœ νš¨μ„± 검사 λŸ°νƒ€μž„ κ°’ ꡬ문 뢄석 및 μœ νš¨μ„± 검사λ₯Ό μœ„ν•œ μŠ€ν‚€λ§ˆ λΉŒλ”

ν…ŒμŠ€νŠΈ

  • πŸƒ Jest – λ‹¨μˆœμ„±μ— μ΄ˆμ μ„ 맞좘 즐거운 JavaScript ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬
  • πŸ™ Testing Library – μš°μˆ˜ν•œ ν…ŒμŠ€νŠΈλ₯Ό μ œμ•ˆν•˜λŠ” κ°„λ‹¨ν•˜κ³  μ™„λ²½ν•œ ν…ŒμŠ€νŠΈ μœ ν‹Έλ¦¬ν‹°

λ””μžμΈ νŒ¨ν„΄

  • β›” ESLint – JavaScript μ½”λ“œ λ‚΄ 문제 μ°ΎκΈ° 및 ν•΄κ²°
  • πŸŽ€ Prettier – λ‹€μ–‘ν•œ μ–Έμ–΄ 및 μ½”λ“œ νŽΈμ§‘κΈ°λ₯Ό μ§€μ›ν•˜λŠ” μ½”λ“œ 포맷터
  • 🐺 Husky – κ°„νŽΈν•œ λͺ¨λ˜ λ„€μ΄ν‹°λΈŒ Git Hooks
  • πŸ’© lint-staged – μ€€λΉ„λœ git νŒŒμΌμ— λŒ€ν•΄ λ¦°ν„°λ₯Ό μ‹€ν–‰ν•˜κ³  πŸ’©μ΄ μ½”λ“œ λ² μ΄μŠ€μ— 듀어가지 μ•Šλ„λ‘ 지원
  • πŸ““ commitlint – νŒ€μ΄ 컀밋 κ·œμΉ™μ„ μ€€μˆ˜ν•˜λ„λ‘ 지원
  • 🏷️ Standard Version – κΈ°μ‘΄ μ»€λ°‹μœΌλ‘œ κ΅¬λ™λ˜λŠ” sember 및 CHANGELOG 생성을 μ΄μš©ν•œ 버전 관리 μœ ν‹Έλ¦¬ν‹°

뢄석

  • πŸ•΅πŸ»β€β™‚οΈ why-did-you-render (선택 사항) – 잠재적으둜 ν”Όν•  수 μžˆλŠ” μž¬λ Œλ”μ— λŒ€ν•΄ μ•Œλ¦Ό

좔가적인 ν”ŒλŸ¬κ·ΈμΈ

  • πŸ—ƒοΈ next-compose-plugins – Next.js의 ν”ŒλŸ¬κ·ΈμΈκ³Ό 더 κΉ¨λ—ν•œ APIλ₯Ό 제곡
  • πŸ“± next-pwa – Next.js μ „μš© PWA ν”ŒλŸ¬κ·ΈμΈ
  • πŸ“ˆ next-seo – Next.js ν”„λ‘œμ νŠΈμ—μ„œ SEOλ₯Ό 더 μ‰½κ²Œ 관리할 수 μžˆλŠ” ν”ŒλŸ¬κ·ΈμΈ
  • πŸ€– next-sitemap – Next.js μ „μš© μ‚¬μ΄νŠΈ 맡 생성기
  • πŸŽ‰ Partytown – λ¦¬μ†ŒμŠ€ 집약적인 타사 슀크립트λ₯Ό 메인 μŠ€λ ˆλ“œμ—μ„œ μ›Ή μž‘μ—…μžλ‘œ 재배치

▢️ μ‹œμž‘ν•˜κΈ°

πŸ“™ GitHubμ—μ„œ μƒˆ λ ˆν¬μ§€ν† λ¦¬ λ§Œλ“€κΈ°

  1. "Use this template" λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.
  2. μƒˆ λ ˆν¬μ§€ν† λ¦¬λ₯Ό κ΅¬μ„±ν•˜κ³  "Create repository from template" λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.
  3. 이제 μƒμ„±λœ λ ˆν¬μ§€ν† λ¦¬λ₯Ό λ‘œμ»¬μ— λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. :
 $ git clone https://github.com/<YOUR-GITHUB-LOGIN>/<NAME-OF-YOUR-GENERATED-REPOSITORY>.git

πŸ› οΈ μ„€μΉ˜

슈퍼 μ•± κ°œλ°œμ„ μ‹œμž‘ν•˜κΈ° 전에 ν”„λ‘œμ νŠΈμ˜ 쒅속성을 μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈμ˜ 루트둜 μ΄λ™ν•©λ‹ˆλ‹€. :

$ cd <NAME-OF-YOUR-GENERATED-REPOSITORY>

λ‹€μŒ λ‹¨κ³„μ—μ„œλŠ” νŒ¨ν‚€μ§€ κ΄€λ¦¬μžλ₯Ό μ„ νƒν•˜κ³  package.json μŠ€ν¬λ¦½νŠΈμ— ν¬ν•¨λœ λͺ…λ Ήμ–΄λ₯Ό μ„ νƒν•˜κ³  λ³€κ²½ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ μ•„λž˜ μ„€λͺ…μ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

ν”„λ‘œμ νŠΈμ˜ λͺ¨λ“  쒅속성을 μ„€μΉ˜ν•©λ‹ˆλ‹€. :

# PNPM
$ pnpm install
# NPM
$ npm install
# Yarn
$ yarn install

⌨️ 개발

λͺ¨λ“  쒅속성이 μ„€μΉ˜λ˜λ©΄ 둜컬 개발 μ„œλ²„λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. :

# PNPM
$ pnpm run dev
# NPM
$ npm run dev
# Yarn
$ yarn dev

이제 μ½”λ”©ν•˜λ©΄ λ©λ‹ˆλ‹€!

πŸ–₯️ 배포

λ³€κ²½ λ‚΄μš©μ„ μ μš©ν•œ ν›„ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— ν…ŒμŠ€νŠΈ 및/λ˜λŠ” 배포할 λΉŒλ“œλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œλ•μ…˜ λΉŒλ“œ λ§Œλ“€κΈ° :

# PNPM
$ pnpm run build
# NPM
$ npm run build
# Yarn
$ yarn build

그런 λ‹€μŒ λΉŒλ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. :

# PNPM
$ pnpm start
# NPM
$ npm start
# Yarn
$ yarn start
μ‚¬μš©ν•  수 μžˆλŠ” μΆ”κ°€ λͺ…λ Ή 보기

린트

# PNPM
$ pnpm run lint
# NPM
$ npm run lint
# Yarn
$ yarn lint

λ¦°νŠΈμ™€ 버그 ν•΄κ²°

# PNPM
$ pnpm run lint:fix
# NPM
$ npm run lint:fix
# Yarn
$ yarn lint:fix

ν…ŒμŠ€νŠΈ

$ pnpm run test # or pnpm run test:watch
# NPM
$ npm run test # or npm run test:watch
# Yarn
$ yarn test # or yarn test:watch

νƒ€μž… 검사

# PNPM
$ pnpm run type-check
# NPM
$ npm run type-check
# Yarn
$ yarn type-check

포맷(μ„œμ‹)

# PNPM
$ pnpm run format
# NPM
$ npm run format
# Yarn
$ yarn format

μƒν˜Έμž‘μš© μ—…λ°μ΄νŠΈ 도ꡬ

# PNPM
$ pnpm run up
# NPM
$ npm run up
# Yarn
$ yarn up

λͺ¨λ“  쒅속성 μ—…λ°μ΄νŠΈ

# PNPM
$ pnpm run up-latest
# NPM
$ npm run up-latest
# Yarn
$ yarn up-latest

메이저 λ²„μ „μœΌλ‘œ 릴리즈

# PNPM
$ pnpm run release-as-major
# NPM
$ npm run release-as-major
# Yarn
$ yarn release-as-major

λ§ˆμ΄λ„ˆ λ²„μ „μœΌλ‘œ 릴리즈

# PNPM
$ pnpm run release-as-minor
# NPM
$ npm run release-as-minor
# Yarn
$ yarn release-as-minor

패치 λ²„μ „μœΌλ‘œ 릴리즈

# PNPM
$ pnpm run release-as-patch
# NPM
$ npm run release-as-patch
# Yarn
$ yarn release-as-patch

릴리즈 νΌλΈ”λ¦¬μ‹œ

# PNPM
$ pnpm run push-release
# NPM
$ npm run push-release
# Yarn
$ yarn push-release

μ›κ²©μ—μ„œ μ—…λ°μ΄νŠΈ κ°€μ Έμ˜€κΈ° 및 ν˜„μž¬ λ³€κ²½ λ‚΄μš© μœ μ§€

# PNPM
$ pnpm run pull
# NPM
$ npm run pull
# Yarn
$ yarn pull

βš™οΈ μΆ”κ°€ ꡬ성

SWR

SWR둜 μ „ν™˜

ν”„λ‘œμ νŠΈμ— SWR μ„€μΉ˜ :

# PNPM
$ pnpm install swr
# NPM
$ npm install swr
# Yarn
$ yarn add swr

src/pages/_app.tsx 및 src/pages/[login].tsx에 μžˆλŠ” React Query의 λͺ¨λ“  import 라인, provider 및 μ½”λ“œ 블둝을 μ œκ±°ν•©λ‹ˆλ‹€.

λ°”λ‘œ κ·Έκ²λ‹ˆλ‹€! μ•±μ—μ„œ 데이터λ₯Ό κ°€μ Έμ˜€λ €λ©΄ useFetch ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

데λͺ¨λ₯Ό 보고싢닀면 src/pages/[login].tsxμ—μ„œ SWR κ΅¬ν˜„μ˜ λͺ¨λ“  import 라인 및 μ½”λ“œ λΈ”λ‘μ˜ 주석을 ν•΄μ œν•©λ‹ˆλ‹€.

λ Œλ”λ§ν•œ 이유

ν™œμ„±ν™” 방법

ν”„λ‘œμ νŠΈ λ£¨νŠΈμ— src/scripts 경둜의 babel.config.js νŒŒμΌμ„ λ„£κ³  .babelrc νŒŒμΌμ„ μ‚­μ œν•©λ‹ˆλ‹€.

pages/_app.tsxμ—μ„œ wdyr import 라인의 주석을 ν•΄μ œν•©λ‹ˆλ‹€.

λ°”λ‘œ κ·Έκ²λ‹ˆλ‹€! 이제 React μž¬λ Œλ”λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

μ œκ±°ν•˜λŠ” 방법

babel.config.js, wdyr.ts νŒŒμΌμ„ μ‚­μ œν•˜κ³  pages/_app.tsxμ—μ„œ wdyr import 라인을 μ‚­μ œν•©λ‹ˆλ‹€. :

# PNPM
$ pnpm uninstall @welldone-software/why-did-you-render
# NPM
$ npm uninstall @welldone-software/why-did-you-render
# Yarn
$ yarn remove @welldone-software/why-did-you-render

πŸ“ 파일 트리

ν…œν”Œλ¦Ώμ˜ ꡬ쑰에 λŒ€ν•΄μ„œλŠ” μ•„λž˜ 파일 트리λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

파일 트리 보기

(**)둜 ν‘œμ‹œλœ 폴더와 νŒŒμΌμ€ 선택 μ‚¬ν•­μ΄λ―€λ‘œ μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“‚ next-plate/
┣ πŸ“‚ .github/                   # GitHub's folder configs **
┣ πŸ“‚ .husky/                    # Husky's folder
┃ ┣ πŸ“ƒ commit-msg               # Commitlint git hook
┃ β”— πŸ“ƒ pre-commit               # Lint-staged git hook
┣ πŸ“‚ .vscode/                   # VSCode's workspace **
┣ πŸ“‚ public/                    # Public folder
┃ ┣ πŸ“‚ static/                  # Static files folder **
┃ ┃ ┣ πŸ“‚ icons/                 # Icons folder **
┃ ┃ ┣ πŸ“‚ images/                # Images folder **
┃ ┃ ┣ πŸ“‚ sounds/                # Sounds folder **
┃ ┃ β”— πŸ“‚ videos/                # Videos folder **
┃ ┣ πŸ“‚ docs/                    # Documentation folder **
┃ ┃ ┣ πŸ“‚ demo/                  # Demonstrations project **
┃ ┃ β”— πŸ“‚ translations/          # Translations folder **
┃ ┣ πŸ“ƒ favicon.ico              # Icon tab browser
┃ ┣ πŸ“ƒ site.webmanifest         # PWA config
┣ πŸ“‚ src/
┃ ┣ πŸ“‚ animations/              # Framer Motion Animations **
┃ ┣ πŸ“‚ components/              # App Components
┃ ┃ β”— πŸ“‚ Motion/                # Chakra + Framer components **
┃ ┣ πŸ“‚ hooks/                   # React Hooks **
┃ ┃ β”— πŸ“ƒ useFetch.ts            # SWR fetch hook (optional) **
┃ ┣ πŸ“‚ interfaces/              # TypeScript Interfaces
┃ ┣ πŸ“‚ pages/                   # App pages
┃ ┣ πŸ“‚ scripts/                 # Additional scripts **
┃ ┃ ┣ πŸ“ƒ babel.config.js        # Babel config with WDYR **
┃ ┃ β”— πŸ“ƒ wdyr.ts                # WDYR file **
┃ ┣ πŸ“‚ services/                # Services
┃ ┃ ┣ πŸ“‚ global/
┃ ┃ ┃ β”— πŸ“ƒ api.ts               # AXIOS config
┃ ┃ β”— πŸ“‚ users/
┃ ┃   ┣ πŸ“ƒ index.ts             # React Query Configuration
┃ ┃   β”— πŸ“ƒ keys.ts              # React Query Key
┃ ┣ πŸ“‚ stores/                  # Zustand stores
┃ ┣ πŸ“‚ styles/                  # Styles folder
┃ ┃ ┣ πŸ“ƒ bgImages.ts            # SVG background images **
┃ ┃ β”— πŸ“ƒ theme.ts               # Chakra-UI theme
┃ β”— πŸ“‚ utils/                   # Useful functions **
┣ πŸ“ƒ .babelrc                   # Default Babel config
┣ πŸ“ƒ .editorconfig              # Editor config
┣ πŸ“ƒ .eslintignore              # ESLint ignore
┣ πŸ“ƒ .eslintrc                  # ESLint config
┣ πŸ“ƒ .gitignore                 # Git ignore
┣ πŸ“ƒ .versionrc                 # Versioning config
┣ πŸ“ƒ .commitlintrc              # Commitlint config
┣ πŸ“ƒ jest.config.js             # Jest config
┣ πŸ“ƒ jest.setup.js              # Jest setup
┣ πŸ“ƒ LICENSE                    # License of the project
┣ πŸ“ƒ next-env.d.ts              # Next.js types to TypeScript
┣ πŸ“ƒ next-seo.config.js         # Next-SEO config
┣ πŸ“ƒ next-sitemap.config.js     # Next-Sitemap config
┣ πŸ“ƒ next.config.js             # Next.js config
┣ πŸ“ƒ .prettierrc                # Prettier config
┣ πŸ“ƒ README.md                  # Main README
┣ πŸ“ƒ renovate.json              # Renovate Bot config **
┣ πŸ“ƒ tsconfig.json              # TypeScript config

πŸ“œ λΌμ΄μ„ΌμŠ€

λ§Œμ•½ 이 ν…œν”Œλ¦Ώμ„ ν”„λ‘œμ νŠΈμ— μž¬μ‚¬μš©ν•˜μ‹ λ‹€λ©΄ ν”„λ‘œμ νŠΈ λ°”λ‹₯글에 제 GitHub ν”„λ‘œν•„μ— λŒ€ν•œ 링크λ₯Ό μΆ”κ°€ν•΄μ£Όμ„Έμš”. κ°μ‚¬ν•©λ‹ˆλ‹€!

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ΌμŠ€μ— 따라 λΌμ΄μ„ΌμŠ€κ°€ λΆ€μ—¬λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λΌμ΄μ„ΌμŠ€ νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.


⭐ 이 ν”„λ‘œμ νŠΈμ˜ μœ μ§€λ₯Ό μœ„ν•΄ 별을 λˆŒλŸ¬μ£Όμ„Έμš”!

❀️ λ‹Ήμ‹ μ˜ 관심에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

πŸ‘¨β€πŸ’» 즐거운 μ½”λ”©λ˜μ„Έμš”!


"Buy Me A Coffee"