You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Webpack이 Javascript에 import한 css 파일을 읽어서 변환할 때 통합해 준다.
Import된 CSS는 rule에서 설정한 css-loader를 통해 CSS 코드로 변환된다.
변환 방식 설정
constpath=require("path");module.exports={entry: ...,output: {...},module{rules: [/* Loader 1개 사용 */{test: /\.js$/,use: {loader: "babel-loader",options: {presets: [["@babel/preset-env",{targets: "defaults"}]],},},},/* 여러 개 Loader 사용 */{test: /\.scss$/,use: ["style-loader","css-loader","sass-loader"],},],}}
rules : 파일 종류에 따라 어떻게 변환시킬 것인지 설정
test : rule을 적용할 file 지정. Regular expression 사용 가능
use : 사용할 loader 설정 (Loader : 변환기 (webpack word))
Loader 1개 사용
loader : 사용할 loader 지정
options
Loader가 사용할 option
babel-loader는 babel core(@babel/preset-env를 사용)
여러 개 loader 동시 사용
Array로 loader 목록 전달
사용하는 순서의 역순으로 array에 전달해야 함 (webpack은 뒤에서부터 읽기 때문)
Loader
babel-loader : Javascript code의 호환성 유지를 위해 호환되는 옛날 javascript code로 변환
변환된 javascript file을 browser(client)에서 접근할 수 있도록 static file을 외부에 공개
/* Video 및 avatar image와 같은 방법으로 적용 * Client에서 `/static/~` URL로 요청할 때 `assets` 폴더에 있는 파일에 접근 허용 */app.use("/static",express.static("assets"));
HTML view에서 공개된 static file 연결
<html><head><!-- MiniCssExportPlugin을 사용해서 추출한 CSS File --><linkrel="stylesheet" href="/static/css/styles.css" />
</head><body>
...
<!-- Babel에 의해 변환된 Javascript File --><scriptsrc="/static/js/main.js"></script></body></html>
외부에서 config 설정 주입
mode, watch 등 상황에 따라 일부 설정을 on/off 해야 할 때가 있다.
webpack 명령어를 실행할 때 webpack.config.js로 config 설정을 주입할 수 있다.
--mode : mode 설정 주입
--watch or -w : watch 설정 on/off
package.json에서 상황에 따라 mode와 watch 설정을 다르게 적용해서 script를 실행할 수 있다.
{
...,"scripts": {
...,"build:assets": "webpack --mode=production", // 상용 환경으로 배포하기 위한 변환"dev:assets": "webpack --mode=development -w", // 개발 환경에서 변환. 개발 편의를 위해 watch 설정이 추가됨
}
}