더 알아보기 - 디펜던시 그래프란?
- 하나의 파일이 다른 파일에 의존할 때 마다, 웹팩은 이를
의존성
으로 취급한다.- 웹팩이 애플리케이션을 처리 할 때, 엔트리 포인트에서 시작하여 애플리케이션에서 필요한 모든 모듈을 포함하는 디펜던시 그래프를 재귀적으로 빌드 한 뒤, 모든 모듈을 브라우저에 의해 로드되는 번들로 묶는다.
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
module.exports = {
mode: "development",
entry: "./src/index.js",
resolve: {
extensions: [".js", ".css"],
},
devServer: {
port: 9000,
},
devtool: "source-map",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist"),
},
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: "./index.html",
}),
],
};
development
, production
, none
으로 설정 할 수 있다.webpack --mode=development
) 이 있다.entry: "./src/index.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist"),
},
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
},
style-loader
와 css-loader
를 필수적으로 사용해야 한다. 웹팩! require()/ import 문 내에서 '.css' 파일로 확인되는 경로를 발견하면 번들에 추가하기 전에 style-loader와 css-loader를 사용하여 변환해줘
css-loader
: CSS 파일을 읽어서 문자열 형태로 변환한다.style-loader
: 위에서 변환된 문자열을 읽어와서 index.html
파일 내부에 <style>
태그로 스타일을 삽입해준다.const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: "./index.html",
}),
],
플러그인 사용을 위해서는 require()
를 통해 플러그인을 요청하고, plugins 배열
에 추가해준다.
다른 목적으로 플러그인을 여러번 사용 할 수 있으므로, new
연산자로 호출하여 플러그인 인스턴스를 만들어 사용한다.
CleanWebpackPlugin
: 빌드 이전 결과물을 제거하는 플러그인
HtmlWebpackPlugin
: 옵션(template)으로 받는 HTML 파일을 참조하여 새로운 HTML파일을 생성하여, 최종적으로 만들어지는 새로운 HTML 파일에 <script>
태그를 자동으로 생성해준다.
resolve: {
extensions: [".js", ".css"],
},
const path = require('path');
resolve: {
alias: {
Utilities: path.resolve(__dirname, 'src/utilities/'),
},
alias
를 설정하여 상대 경로 대신 절대 경로를 사용 할 수 있다.import Utility from 'Utilities/utility';