로더 도입하기

SPANKEEE·2022년 1월 4일
0

웹팩

목록 보기
4/7

이제 CSS를 적용할 로더를 도입해 보자

최종 폴더에 style.css 파일을 생성

body{
    background-color: cadetblue;
    color: white;
}

index.html에 css 적용

<html>
    <head>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <h1>Hello webpack!</h1>
        <div id="root"></div>
        <script src="public/index_bundle.js"></script>
    </body>
</html>

라이브 서버 실행 결과

위 처럼 css파일 추가와 페이지 스타일이 변경된 것을 확인할 수 있다.

여기서 아쉬운점은 자바스크립트 파일은 번들링 되어있지만 css파일은 번들링 되지 않은점을 확인할 수 있다.

웹팩은 스타일도 하나의 번들링된 자바스크립트 파일로 번들할 수 있다.

여기서 로더란 자바스크립트가 아닌 png나 css파일을 번들링 해주는 역할을 한다.

우선 터미널을 통해 해당 명령어로 로더를 설치해 준다.

npm i -D css-loader style-loader

pakage.json

{
  "name": "template_wp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^6.5.1",
    "style-loader": "^3.3.1",
    "webpack": "^5.65.0",
    "webpack-cli": "^4.9.1"
  }
}

pakage.json 파일 내에 CSS로더와 스타일 로더가 추가된 것을 확인할 수 있다.

webpack.config.js 설정파일 수정

설정파일에
output 다음으로 module을 생성한다.

const path = require('path');
// 파일의 경로를 쉽게 핸들링 해줄 수 있게 도와주는 일종의 부품이라 생각한다.

module.exports = {
    mode: "development",
    //개발
    entry: "./source/index.js",
    // 도입할 .js 위치
    output: {
        path: path.resolve(__dirname,"public"),
        // dist 라는 하위 경로에 최종적인 경과물을 "public"에 놓아라
        filename: 'index_bundle.js'
    },
    module: {
        rules:[
            // 모듈을 처리하는 규칙 
            {
                test: /\.css$/,
                // 웹팩을 통해서 가공하는 여러가지 데이터중 CSS확장자 파일 처리하는 방식을 알려주고 싶다
                use: ['style-loader', 'css-loader']
                // 웹팩을 동작시켰을때 확장자가 CSS인 파일을 만나면 웹팩이 알아서 해당 CSS파일을 웹팩 안으로 로드시켜준다.
            }
        ]
    }
}

index.html에 내에 head 태그와 안에 내용들 삭제

<html>
    <body>
        <h1>Hello webpack!</h1>
        <div id="root"></div>
        <script src="public/index_bundle.js"></script>
    </body>
</html>

index.js파일내용 수정
(최종 디렉토리 폴더에 있는 style.css를 source 안으로 이동시킨다)

import hello_word from './hello.js';
// 수입하다 변수명 어디서? 해당루트
import world_word from './world.js';
// 수입하다 변수명 어디서? 해당루트
import css from './style.css';
// 수입하다 변수명 어디서? 해당루트
document.querySelector('#root').innerHTML = hello_word + ' ' + world_word;
// 도큐먼트에 요소선택(아이디태그 root).HTML내 내용추가
console.log('css', css);
// 콘솔로그를 통해 css를 번들링 했는지 확인

터미널에 아래 명령어 입력

npx webpack

입력한 뒤 브라우저 개발자 모드를 통해 콘솔로그로 css 확인

(원래는 undefined가 뜨면 안된다.)

  • element를 보면 이전에 index.html 파일에 head를 포함하지 않았으나 head태그와 style태그 안에 이전에 우리가 작성한 css 코드가 가공되어 있다.

public 폴더에 css파일이 없이 index_bundle.js 파일에 자바스크립트 형식으로 번들링 된 것을 확인할 수 있다.

profile
해야되요

0개의 댓글