본문 바로가기
프로그래밍/프로젝트

번들링과 웹팩(web-pack)

by monicada 2022. 7. 25.
728x90

웹팩을 사용해보는 과제를 수행했다

 

index.html

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webpack</title>
</head>
<body>
    안녕하세요 웹페이지 포트폴리오 입니다.
</body>
</html>

 

_config.yml

 

theme: jekyll-theme-cayman

 

web-pack 과제 

작성한 전체 코드 목차
어렸을 때 많이 했던 게임들 완전 추억임

번들링은 여러 제품이나 코드, 프로그램을 묶어서 제공하는 것을 말한다

프론트엔드 개발자에게 번들은 '사용자에게 웹 애플리케이션을 제공하기 위한 파일 묶음'이다

 

webpack은 2022년 7월 현재 프론트엔드 애플리케이션 배포를 위해서 가장 많이 사용하는 번들러이다

모듈 번들러란 HTML, CSS, JavaScript등의 자원을 전부 각 모듈로 보고 이를 조합해 하나의 묶음으로 번들링 하는 도구이다

 

웹팩의 핵심 개념 

  • Entry: entry point를 기반으로 직간접적으로 의존하는 다른 모듈과 라이브러리를 찾아낼 수 있음 
  • Output: 생성된 번들을 내보낼 위치와 이 파일의 이름을 지정하는 방법을 webpack에게 알려주는 역할 수행 

기본 출력 파일의 경우 ./dist/main.js로, 생성된 기타 파일의 경우 ./dist 폴더로 설정됨

  • Loaders: webpack은 기본적으로 javascript와 JSON 파일만 이해함 

loader를 사용하면 webpack이 다른 유형의 파일을 처리, 유효한 모듈로 변환해 애플리케이션에 사용하거나 디펜던시 그래프에 추가 가능함

  • Plugins: 번들 최적화, 에셋 관리, 환경변수 주입 등 수행 

플러그인을 사용하기 위해선 require()를 통해 플러그인을 먼저 요청해야함

 

dist 폴더 코드 

 

//index.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
<script defer src="main.js"></script></head>
<body>
    <div id="app"></div>
</body>
</html>

 

src 폴더 코드

 

//app.css

body {
    background-color: blueviolet;
}

 

//app.js

import {sum} from './math.js';
import './app.css';
import webpackImage from './webpack.png';

window.addEventListener('DOMContentLoaded', ()=> {
  const el = document.querySelector('#app');
  el.innerHTML = `
  <h1>1 + 2 = ${sum(1, 2)}<h1>
  <img src="${webpackImage}" alt="webpack" />
  `
})

 

//index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
</body>
</html>

 

//math.js

export function sum(a, b){
    return a + b;
}

 

//webpack.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
const {CleanWebpackPlugin}  = require('clean-webpack-plugin');

module.exports = {
    mode: 'development',
    entry: {
        main: './src/app.js'
    },
    output: {
        path: path.resolve('./dist'),
        filename: '[name].js',
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']

            },
            {
                test: /\.png$/,
                use: [{
                    loader: 'file-loader',
                    options: {
                        // name: '[name].[ext]?[hash]'
                }
                }]
            }

        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html'
        }),
        new CleanWebpackPlugin(),
    ]
}

'프로그래밍 > 프로젝트' 카테고리의 다른 글

TDD - Testbuilder 과제  (0) 2022.08.03
프로젝트 경험 설명  (0) 2022.07.28
구글 클론 코딩  (0) 2022.07.24
[Backend] 인증/보안 auth-basic-cookie  (0) 2022.07.15
StatesAirline Client part1  (0) 2022.06.14

댓글