Webpack 러닝 가이드
  • Webpack 모듈 번들러
  • Web Modules
    • Legacy 모듈 관리
    • ES 모듈 관리
  • Babel
    • Babel JavaScript 컴파일러
    • Babel 독립형 빌드
    • Babel 노드 (Node.js) ✘
    • Babel CLI 구성
    • Babel 플러그인
  • webpack
    • Webpack 개발 환경 구성
      • Webpack 설치
      • Webpack 통합
      • Webpack 구성 파일
      • Webpack 워치
      • Webpack 모드
      • Webpack 별칭 등록
      • Webpack 호환성
      • Webpack 개발 서버
      • Webpack 멀티 페이지 설정
    • Webpack 로더
      • File 로더
      • CSS 로더
      • PostCSS 로더
      • Sass 로더
      • Babel 로더
      • TypeScript 로더
    • Webpack 플러그인
      • 환경 변수 등록
      • 빌드 결과 자동 정리
      • 빌드 결과 자동 주입
      • CSS 파일 개별 추출
      • CSS 파일 크기 최적화
      • CSS 미디어쿼리 스플리팅
      • 이미지 파일 크기 최적화
  • React
    • React App 매뉴얼 구성
      • Webpack 초기 구성
      • Babel 컴파일러 구성
      • CSS 스타일 구성
      • 이미지 구성
      • 환경변수 플러그인
      • HTML 플러그인
      • 최적화 구성
      • 코드 스플리팅
      • 개발 서버
      • 이미지, 폰트 에셋 구성
      • 환경 변수 + HTML 구성
      • 빌드 최적화 구성
      • 빌드 자동 정리 구성
      • 개발 서버 구성
      • 폴리필 구성
Powered by GitBook
On this page

Was this helpful?

  1. webpack
  2. Webpack 개발 환경 구성

Webpack 멀티 페이지 설정

PreviousWebpack 개발 서버NextWebpack 로더

Last updated 4 years ago

Was this helpful?

Webpack 개발 환경에서 멀티 페이지 앱(MPA)을 만들어야 한다면 몇 가지 설정이 필요합니다.

.
├── config/
├── src/
│   ├── assets/
│   ├── components/
│   ├── modules/
│   ├── polyfills/
│   ├── styles/
│   │   └── subpage.scss # 서브 페이지 스타일
│   ├── template/
│   │   └── page.ejs     # 페이지 템플릿
│   ├── pages
│   │   └── subpage.js   # 서브 페이지
│   └── index.js         # 메인 페이지
├── package-lock.json
└── package.json
module.exports = {
  // 입력 설정
  entry: {
    main: './src/index.js',
    subpage: './src/pages/subpage.js'
  },

  // 출력 설정
  output: {
    path: path.resolve(__dirname, '../dist'),
    filename: '[name].js',
  },

  // 플러그인 설정
  plugins: [
    // 메인 페이지
    new HtmlWebpackPlugin({
      // 파일 이름
      filename: 'index.html',
      // 청크
      chunks: ['main'],
      // 문서 메타
      meta: {
        'theme-color': '#4285f4',
        'description': 'Webpack 러닝 가이드 실습을 진행합니다.',
      },
      // 사용자 정의 옵션
      templateParameters: {
        title: 'Webpack 러닝 가이드',
        lang: 'ko-KR',
      },
      template: './src/template/page.ejs',
      inject: false,
      minify: true,
    }),
    
    // 서브 페이지
    new HtmlWebpackPlugin({
      filename: 'subpage.html',
      chunks: ['subpage'],
      meta: {
        'theme-color': '#4285f4',
        'description': 'Webpack 러닝 가이드 서브 페이지 입니다.',
      },
      templateParameters: {
        title: '서브 페이지 | Webpack 러닝 가이드',
        lang: 'ko-KR',
      },
      template: './src/template/page.ejs',
      inject: false,
      minify: true,
    }),
  ]
}
/** @jsx createElement */
import '../styles/subpage.css'
import { getNode, createElement, render } from '../modules/DOM'

/* -------------------------------------------------------------------------- */

const rootNode = getNode('#root')
const headlineNode = <h1 class="subpage headline">서브 페이지</h1>
render(headlineNode, rootNode)
body {
  background: #222;
  color: #fff;
}

을 실행하여 출력한 결과를 살펴보면, 멀티 HTML, CSS, JavaScript 파일이 생성된 것을 확인할 수 있습니다.

빌드 명령