모듈 번들러로 쉽게 말해 최신화 되어 있는 코드를 호환이 되는 버전으로 변환시켜주는 역할을 한다.
npm install webpack webpack-cli
import "../scss/styles.scss";
body {
background-color: red;
}
package.json
...
"scripts": {
"dev:server": "nodemon --exec babel-node init.js --delay 2",
"dev:assets": "webpack",
},
webpack.config.js 파일을 생성
// 경로를 절대 경로로 만들어준다
const path = require("path");
// import path from "path"
const ENTRY_FILE = path.resolve(__dirname, "assets", "js", "main.js");
// static 폴더를 만들어서 해당 파일을 넣는다
const OUTPUT_DIR = path.join(__dirname, "static");
const config = {
entry: ENTRY_FILE,
output: {
path: OUTPUT_DIR,
filename: "[name].js"
},
};
module.exports = config;
-> npm run dev:assets
webpack.config.js
const path = require("path");
// import path from "path"
const autoprefixer = require("autoprefixer");
const ExtractCSS = require("extract-text-webpack-plugin");
const MODE = process.env.WEBPACK_ENV;
const ENTRY_FILE = path.resolve(__dirname, "assets", "js", "main.js");
const OUTPUT_DIR = path.join(__dirname, "static");
const config = {
entry: ENTRY_FILE,
mode: MODE,
module: {
rules:[
{
test: /\.(scss)$/,
use: ExtractCSS.extract([
{
loader: "css-loader"
},
{
loader: "postcss-loader",
options:{
plugins(){
return [autoprefixer({browsers:"cover 99.5%"})]
}
}
},
{
loader: "sass-loader"
}
])
}
]
},
output: {
path: OUTPUT_DIR,
filename: "[name].js"
},
// 추출을 해서 새로운 styles.css파일을 만든다
plugins : [new ExtractCSS("styles.css")]
};
module.exports = config;
package.json (npm install cross-env)
"scripts": {
"dev:server": "nodemon --exec babel-node init.js --delay 2",
"dev:assets": "cross-env WEBPACK_ENV=development webpack -w",
"build:assets": "WEBPACK_ENV=production webpack"
},
npm install extract-text-webpack-plugin@next
npm install css-loader postcss-loader sass-loader
npm install autoprefixer
그리고 plugins : [new ExtractCSS("styles.css")] 통해 추출된 파일은
output: {
path: OUTPUT_DIR,
filename: "[name].js"
}
이 정보에 따라 이름이 주어지고 해당 폴더에 저장이 된다.
ERROR :
'WEBPACK_ENV'은 내부 또는 외부 명령 배치 파일이 아닙니다 오류
-> npm install cross-env 설치
-> "dev:assets": "cross-env WEBPACK_ENV=development webpack", 수정
웹팩은 전부 이해할 필요는 없고 흐름만 읽을 줄 알면 된다고 해서 위안이 됐다...