Nuxt.js는 Vue.js를 기반으로 한 프레임워크로, 서버 사이드 렌더링(SSR) 및 정적 사이트 생성(SSG)을 지원하는 강력한 도구입니다. Nuxt.js를 사용하여 웹 애플리케이션을 개발하려면 애플리케이션의 동작과 외형을 설정할 수 있어야 합니다. 이를 위한 주요 도구가 바로 nuxt.config.js 파일입니다. 이 파일을 통해 웹 애플리케이션을 세밀하게 제어하고 원하는 대로 커스터마이즈할 수 있습니다. 이 블로그 포스팅에서는 nuxt.config.js 파일을 활용하여 Nuxt.js 애플리케이션을 설정하는 방법을 상세히 설명합니다.
nuxt.config.js 파일이란?
nuxt.config.js 파일은 Nuxt.js 애플리케이션의 설정 파일로, 애플리케이션의 동작과 외형을 정의합니다. 이 파일을 편집하여 다음과 같은 다양한 측면을 설정할 수 있습니다.
1. 실행 모드 설정
Nuxt.js 애플리케이션은 실행 모드에 따라 동작이 달라집니다. 두 가지 주요 모드는 다음과 같습니다.
- Universal Mode (SSR 모드): mode를 ‘universal’로 설정하면 서버 사이드 렌더링 (SSR) 모드로 애플리케이션이 실행됩니다. 서버에서 초기 HTML 렌더링을 수행하므로 SEO 최적화와 더 빠른 페이지 로딩을 지원합니다.
- SPA Mode (싱글 페이지 애플리케이션): mode를 ‘spa’로 설정하면 싱글 페이지 애플리케이션 (SPA) 모드로 애플리케이션이 실행됩니다. 클라이언트 측에서 라우팅과 컴포넌트 렌더링을 처리합니다.
예제:
// nuxt.config.js
export default {
mode: 'universal', // SSR 모드
}
2. 소스 코드 디렉토리 지정
Nuxt.js는 소스 코드를 어디에서 찾아야 하는지 알아야 합니다. 기본적으로 ‘src’ 디렉토리에 소스 코드가 위치합니다. 디렉토리를 변경하려면 srcDir 설정을 사용합니다.
예제:
// nuxt.config.js
export default {
srcDir: 'my-source', // 'my-source' 디렉토리에서 소스 코드 찾기
}
3. 웹 페이지 헤드 설정
head 설정을 사용하여 웹 페이지의 <head> 섹션을 정의할 수 있습니다. 페이지 타이틀, 메타 태그, 스타일시트, 스크립트 등을 설정할 수 있습니다.
예제:
// nuxt.config.js
export default {
head: {
title: 'My Nuxt App', // 페이지 타이틀
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
],
},
}
4. 모듈 추가
Nuxt.js 모듈을 사용하여 애플리케이션에 기능을 추가할 수 있습니다. 예를 들어, Axios 모듈을 추가하여 HTTP 요청을 보낼 수 있습니다.
npm install --save @nuxt/http
// nuxt.config.js
export default {
modules: [
'@nuxt/http', // Axios 모듈 추가
],
}
5. 웹팩 빌드 설정
build 설정을 사용하여 웹팩 빌드 관련 옵션을 수정할 수 있습니다. 웹팩 설정을 커스터마이즈하여 애플리케이션의 빌드 프로세스를 조절할 수 있습니다.
// nuxt.config.js
export default {
build: {
extend(config, { isDev, isClient }) {
// 웹팩 설정 확장
},
},
}
6. 라우터 설정
라우터를 설정하여 페이지의 경로와 동작을 제어할 수 있습니다. router 설정을 사용하여 기본 URL 경로, 미들웨어, 사용자 정의 라우트를 설정할 수 있습니다.
// nuxt.config.js
export default {
router: {
base: '/my-app/', // 기본 URL 경로 설정
middleware: 'auth', // 미들웨어 추가
extendRoutes(routes, resolve) {
// 사용자 정의 라우트 추가
routes.push({
name: 'custom',
path: '/custom-route',
component: resolve(__dirname, 'pages/custom.vue'),
});
},
},
}
7. 플러그인 추가
플러그인을 추가하여 글로벌 컴포넌트, 메소드, 라이브러리를 애플리케이션에 쉽게 통합할 수 있습니다.
// nuxt.config.js
export default {
plugins: [
'~/plugins/my-plugin.js', // 플러그인 추가
],
}
8. 환경 변수 설정
환경 변수를 설정하여 서버 및 클라이언트 측 코드에서 사용할 수 있습니다.
// nuxt.config.js
export default {
env: {
API_URL: process.env.API_URL || 'http://localhost:3000/api',
},
}
9. 페이지 로딩 설정
페이지 로딩 인디케이터의 색상, 높이 등을 설정할 수 있습니다.
// nuxt.config.js
export default {
loading: {
color: 'blue', // 로딩 색상
height: '5px', // 로딩 바 높이
},
}
커스터마이즈로 더 강력한 Nuxt.js 애플리케이션
이제 nuxt.config.js 파일을 활용하여 Nuxt.js 애플리케이션을 원하는 대로 커스터마이즈할 수 있는 기본적인 방법을 알아보았습니다. nuxt.config.js 파일은 애플리케이션의 동작을 더욱 세밀하게 제어하고 원하는 형태로 만들기 위한 강력한 도구입니다. Nuxt.js를 사용하면 빠르게 웹 애플리케이션을 개발하고 관리할 수 있으며, nuxt.config.js 파일을 통해 애플리케이션의 설정을 관리하는 방법을 숙지하면 보다 강력한 웹 애플리케이션을 개발할 수 있습니다. 더 많은 설정 옵션과 사용 사례를 탐구하여 Nuxt.js 애플리케이션을 더욱 향상시켜보세요.