6. 환경 및 Metadata
이 문서는 Nextjs 프로젝트에서 환경 변수 및 메타데이터 설정에 관한 안내입니다.
먼저, 환경 변수 설정에 대해 설명하고 next.config.js 파일을 설정하는 방법을 설명합니다.
아래의 내용을 통해서 환경 변수, 메타데이터, 파일 구조 및 설정을 알 수 있습니다.
Environment variables
참조: https://nextjs.org/docs/app/building-your-application/configuring/environment-variables#environment-variable-load-order
개발 환경:
.env.development.local파일을 생성하고npm run dev로 실행합니다.배포(프로덕션) 환경:
.env.production.local파일을 생성합니다.코드에서 참조할 때는
process.env형태로 접근합니다. 예:process.env.API_URL
next.config.js
참고:
https://nextjs.org/docs/app/building-your-application/configuring/typescript#type-checking-nextconfigjs
https://nextjs.org/docs/app/api-reference/next-config-js
다음과 같이 루트에 next.config.js 파일을 만들고 설정을 추가합니다:
/** @type {import('next').NextConfig} */
const nextConfig = {
/* config options here */
}
module.exports = nextConfigfavicon.ico, Title 및 Metadata
예전에는
public폴더에favicon.ico를 넣었지만, 현재는src/app폴더에 넣어도 됩니다.요즘 트렌드는 브라우저 타이틀을 "소제목 | 홈페이지이름" 형태로 표시하는 것입니다.
예시로 src/app/layout.tsx에 다음을 추가합니다:
이 설정이 있으면 각
page.tsx에 title metadata가 없을 때 기본값으로NEXT MALL이 표시됩니다.page.tsx에서 소제목(title)을 별도로 설정하면소 제목 | NEXT MALL형태로 표시됩니다.
Subfolder의 Metadata 예시
위와 같이 설정하면 브라우저 타이틀에 My Page | NEXT MALL로 나타납니다.
Naming conventions
Nuxt와는 반대로, 다음 컨벤션을 권장합니다.
폴더(파일 기반 라우팅): kebab-case 사용 (URL 친화적)
BAD:
myComponent/page.tsx,Mycomponent/page.tsxGOOD:
my-component/page.tsx
참고: Vercel 공식 GitHub 예제에서는 파일명이 전부 kebab-case입니다. src/components 폴더 내부 일부가 camelCase인 경우도 있으나, 통일성을 위해 X2bee는 kebab-case로 통일합니다.
Component 이름: PascalCase 사용
예:
export default const MyComponent = () => { ... }
컴포넌트의 파일/폴더 이름과 컴포넌트 내부 이름은 달라도 동작에는 문제가 없지만, 가독성과 디버깅을 위해 가능하면 일치시키는 것을 권장합니다.
Import alias
tsconfig.json에서 경로 별칭을 설정하여 import를 간편하게 할 수 있습니다.
tsconfig.json 예시:
tsconfig.json 예시:
마지막 업데이트