Loader: 우리가 입력한 언어를 모든 브라우저가 이해가능한 옛날식 언어로 바꿔주는 기능을 하는 webpack에 내장된 도구. 즉, 파일을 변환하는 장치
-> nomal css code로의 변환
$red: red;
@import "./_variables";
body{
background-color: $red;
}
//추가
import "../scss/styles.scss";
//최종
import "../scss/styles.scss";
console.log("hi")
-> 이대로 webpack을 실행하면 에러가 날 것임.(scss-loader필요)
scss를 가져다가 일반 css로 변환하고, 그 보통 css를 가지고 우리 프론트엔드에 적용시켜야 한다.
-> 이 3개의 loader를 모아서 한꺼번에 적용할 수 있음.
-> scss파일을 css파일로 변환시켜줌.
npm install sass-loader sass webpack --save-dev
-> @import랑 url()을 풀어서 해석해주는 역할을 함. The css-loader interprets @import and url() like import/require() and will resolve them.
npm install --save-dev css-loader
-> Inject CSS into the DOM(document object model).(css를 DOM에 주입하다.)
npm install --save-dev style-loader
-> 중요한건, 제일 마지막 loader부터 시작해야 된다는 것임.(=역순) 왜냐하면 webpack은 loader를 읽을 때 좌 -> 우로 코드를 읽는게 아니라 우 -> 좌로 코드를 읽기 때문임. 따라서 실제 webpack이 코드에 적용하는 순서는 3 - 2 - 1 이 됨.
그래서 webpack에 적는 순서는
1. style-loader : 바뀐 css를 프론트엔드에 적용시킴.
2. css-loader: @import랑 url()을 풀어서 해석해주는 역할을 함. -> main.js에 scss파일을 import한 걸 모든 브라우저에서 알아들을 수 있는 언어로 바꿔줌.(JS코드로 변환)
3. sass-loader: scss파일을 css파일로 변환시켜줌.
//추가
{
test: /\.scss$/,
use:["style-loader", "css-loader", "sass-loader"]
}
//최종 코드
const path = require("path");
module.exports = {
entry: "./src/client/js/main.js",
mode: "development",
output: {
filename:"main.js",
path: path.resolve(__dirname, "assets", "js"),
},
module :{
rules:[
{
test: /\.js$/,
use: {
loader: "babel-loader",
options: {
presets:[
["@babel/preset-env", {targets: "defaults"}]
]
}
}
},
{
test: /\.scss$/,
use:["style-loader", "css-loader", "sass-loader"]
},
],
},
};
npm run assets -> 변환된 코드가 있는 script
-> 다음 강의에서 계속