Next.js 기초 입문 2회차: 기본 프로젝트 생성 및 구조 파악

📚
제2주차 학습 목표

기본 프로젝트 생성 및 구조

Next.js 프로젝트를 생성하고 기본 파일 구조를 파악합니다.

Next.js 기초 입문 2회차: 기본 프로젝트 생성 및 구조 파악

총 30회차 중 2번째 학습 시간입니다.

📌 이번 회차 학습 목표

  • Next.js 프로젝트를 성공적으로 생성할 수 있습니다.
  • create-next-app 명령어의 주요 옵션을 이해하고 활용할 수 있습니다.
  • 생성된 Next.js 프로젝트의 핵심 디렉토리 및 파일 구조를 파악할 수 있습니다.
  • 각 주요 파일과 디렉토리의 역할 및 중요성을 설명할 수 있습니다.

📝 개념 설명

Next.js는 React 기반의 웹 애플리케이션을 빠르고 효율적으로 개발할 수 있도록 돕는 프레임워크입니다. 프로젝트를 시작하는 가장 기본적인 단계는 템플릿을 통해 초기 환경을 설정하는 것입니다. 이 과정에서 create-next-app 도구가 사용되며, 이는 Next.js 개발에 필요한 모든 초기 설정과 파일들을 자동으로 생성해줍니다.

Next.js 프로젝트 생성 도구: create-next-app

create-next-app은 Next.js 애플리케이션을 빠르고 쉽게 시작할 수 있도록 설계된 CLI(Command Line Interface) 도구입니다. 이 도구를 사용하면 복잡한 빌드 설정 없이 바로 개발을 시작할 수 있는 최적화된 환경이 구축됩니다. 마치 React의 create-react-app과 유사한 역할을 수행합니다.

Next.js 프로젝트의 기본 구조

Next.js 프로젝트가 생성되면 여러 디렉토리와 파일들이 자동으로 구성됩니다. 이 구조를 이해하는 것은 Next.js 애플리케이션의 동작 방식과 파일 배치 규칙을 파악하는 데 필수적입니다.

  • pages/ 디렉토리 (App Router 사용 시 app/): Next.js의 핵심적인 라우팅 시스템을 담당합니다. 이 디렉토리 내부에 생성되는 파일들은 자동으로 경로(route)가 됩니다. 예를 들어, pages/about.js 파일은 /about 경로에 매핑됩니다. (Next.js 13부터는 app/ 디렉토리를 사용하는 App Router가 기본으로 도입되었으나, 본 학습지에서는 기존 pages/ 디렉토리를 기준으로 설명합니다. App Router는 추후 별도 회차에서 다룰 예정입니다.)
  • public/ 디렉토리: 이미지, 폰트 등 정적 자산(static assets)을 저장하는 공간입니다. 이 디렉토리의 파일들은 웹 서버의 루트 경로에서 직접 접근 가능합니다. 예를 들어, public/image.png/image.png로 접근할 수 있습니다.
  • styles/ 디렉토리: 전역 스타일 시트나 모듈화된 CSS 파일을 저장하는 공간입니다. Next.js는 CSS Modules 및 Sass를 기본적으로 지원합니다.
  • package.json: 프로젝트의 메타데이터(이름, 버전 등)와 의존성(dependencies), 개발 스크립트(scripts)를 정의하는 파일입니다. npm install 또는 yarn install 명령어를 실행하면 이 파일에 명시된 패키지들이 설치됩니다.
  • next.config.js: Next.js 애플리케이션의 동작 방식을 사용자 정의할 수 있는 설정 파일입니다. 빌드 설정, 환경 변수, 이미지 최적화 등 다양한 옵션을 구성할 수 있습니다.
📌 핵심 포인트: Next.js 프로젝트 주요 디렉토리
📂
pages/
경로(Route) 정의 및 페이지 컴포넌트 저장
🖼️
public/
이미지, 폰트 등 정적 자산 저장
💅
styles/
전역 및 모듈화된 CSS 스타일 저장
⚙️
next.config.js
Next.js 애플리케이션 전역 설정

💡 예제 & 실습

이제 실제로 Next.js 프로젝트를 생성하고 그 구조를 탐색해보겠습니다.

1단계: 프로젝트 생성

터미널 또는 명령 프롬프트를 열고, 프로젝트를 생성할 디렉토리로 이동한 후 다음 명령어를 실행합니다.

npx create-next-app@latest my-next-app

이 명령어는 my-next-app이라는 이름의 새로운 Next.js 프로젝트를 생성합니다. 실행 시 몇 가지 질문이 나타날 수 있습니다. 본 학습지에서는 다음과 같이 선택하는 것을 권장합니다.

  • Would you like to use TypeScript?: No (JavaScript 기반으로 진행)
  • Would you like to use ESLint?: Yes (코드 품질 유지에 도움)
  • Would you like to use Tailwind CSS?: No (기본 CSS로 진행)
  • Would you like to use 'src/' directory?: No (간결한 구조 유지)
  • Would you like to use App Router? (recommended): No (pages/ 디렉토리 기반으로 학습)
  • Would you like to customize the default import alias?: No

2단계: 프로젝트 디렉토리로 이동

프로젝트 생성이 완료되면, 생성된 프로젝트 디렉토리로 이동합니다.

cd my-next-app

3단계: 개발 서버 실행

프로젝트가 정상적으로 생성되었는지 확인하기 위해 개발 서버를 실행합니다.

npm run dev

명령어를 실행하면 터미널에 Ready on http://localhost:3000과 같은 메시지가 나타납니다. 웹 브라우저를 열고 해당 주소로 접속하면 Next.js의 기본 시작 페이지를 확인할 수 있습니다.

4단계: 프로젝트 구조 탐색

이제 VS Code와 같은 코드 편집기를 사용하여 my-next-app 디렉토리를 열고 파일 구조를 살펴보겠습니다.

. (my-next-app)
├── node_modules/
├── pages/
│   ├── _app.js
│   ├── _document.js
│   ├── api/
│   │   └── hello.js
│   └── index.js
├── public/
│   ├── favicon.ico
│   └── vercel.svg
├── styles/
│   ├── Home.module.css
│   └── globals.css
├── .eslintrc.json
├── .gitignore
├── next.config.js
├── package.json
├── package-lock.json
└── README.md

주요 파일 및 디렉토리의 역할은 다음과 같습니다.

  • pages/index.js: 웹사이트의 루트 경로(/)에 해당하는 메인 페이지 컴포넌트입니다.
  • pages/_app.js: 모든 페이지를 초기화하는 데 사용되는 최상위 컴포넌트입니다. 전역 CSS를 임포트하거나 레이아웃을 정의하는 데 활용됩니다.
  • pages/_document.js: 서버 측에서 렌더링되는 문서의 <html><body> 태그를 사용자 정의할 때 사용됩니다. (주로 SEO나 외부 스크립트 삽입 시 활용)
  • pages/api/hello.js: Next.js의 API Routes 기능을 보여주는 예제 파일입니다. /api/hello 경로로 접근하면 JSON 응답을 반환합니다.
  • styles/globals.css: 애플리케이션 전역에 적용되는 CSS 스타일을 정의합니다.
  • styles/Home.module.css: pages/index.js 페이지에만 적용되는 CSS 모듈 파일입니다. 클래스 이름이 자동으로 해싱되어 충돌을 방지합니다.
🔄 Next.js 프로젝트 생성 흐름
npx create-next-app 실행
프로젝트 디렉토리 이동
npm run dev로 서버 실행
브라우저에서 확인 및 구조 탐색

⚠️ 자주 틀리는 것 / 주의사항

  • 오타 주의: create-next-app 명령어 입력 시 오타가 발생하면 프로젝트가 제대로 생성되지 않거나 예상치 못한 오류가 발생할 수 있습니다.
  • 디렉토리 이름 규칙: pages/ 디렉토리 내의 파일 이름은 URL 경로와 직접적으로 연결되므로, 파일명 규칙(예: index.js/, about.js/about)을 정확히 이해해야 합니다.
  • node_modules 삭제 금지: node_modules 디렉토리는 프로젝트의 모든 의존성 패키지를 포함하므로, 임의로 삭제하거나 수정해서는 안 됩니다. 문제가 발생하면 rm -rf node_modules && npm install 명령어로 재설치할 수 있습니다.
  • App Router와 Pages Router 혼동: Next.js 13부터 App Router가 도입되었으나, 본 학습지에서는 Pages Router를 기반으로 설명합니다. 두 라우터는 구조와 동작 방식에 차이가 있으므로 혼동하지 않도록 주의해야 합니다.
✅ 이번 회차 핵심 정리
  • Next.js 프로젝트는 npx create-next-app@latest [프로젝트명] 명령어로 생성됩니다.
  • 주요 디렉토리로는 라우팅을 담당하는 pages/, 정적 자산을 위한 public/, 스타일을 위한 styles/가 있습니다.
  • package.json은 프로젝트의 의존성과 스크립트를 정의하며, next.config.js는 Next.js 설정을 사용자 정의합니다.
  • npm run dev 명령어로 개발 서버를 실행하여 프로젝트를 브라우저에서 확인할 수 있습니다.

🔗 다음 회차 예고

이번 회차에서는 Next.js 프로젝트를 생성하고 기본적인 파일 구조를 파악했습니다. 다음 3회차에서는 ‘페이지 라우팅 및 컴포넌트 이해’를 주제로, pages/ 디렉토리 내에서 페이지를 생성하고, 페이지 간 이동을 위한 라우팅 방법, 그리고 재사용 가능한 컴포넌트의 개념과 활용에 대해 심도 있게 학습할 예정입니다. 이번에 생성한 프로젝트를 바탕으로 실제 페이지를 구성하는 방법을 익혀보겠습니다.

댓글 남기기