webpack의 번들링 작업을 실행하는 방법은 2가지가 있습니다.
콘솔 실행
-
./webpack.config.js
파일로 실행
2가지 실행 방법과 결과에 대해 알아보겠습니다.
프로젝트 구조 확인
webpack-demo
|- /moda_modules
|- package.json
|- package-lock.json
|- index.html
|- /src
|- app.js
|- math.js
- 번들링 결과의 예상 경로로 script 태그를 수정합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- type=modules 삭제, script 경로 수정 -->
<script src="./dist/main.js"></script>
</head>
<body>
</body>
</html>
import * as math from './math.js'
console.log(math.sum(1, 2));
export function sum(a, b){
return a + b;
}
콘솔 실행
-
entry
: 번들링할 파일을"./src/app.js"
로 설정 -
output
: 결과가 저장될 경로를"./dist/"
로 설정, default는"main.js"
로 생성됩니다. -
mode
: 개발모드로 진행할 것이기 때문에"development"
로 설정 -
명령어
:".\node_modules\.bin\webpack --mode development --entry ./src/app.js --output-path ./dist/"
>.\node_modules\.bin\webpack --mode development --entry ./src/app.js --output-path ./dist/
asset main.js 4.08 KiB [emitted] (name: main)
runtime modules 670 bytes 3 modules
cacheable modules 110 bytes
./src/app.js 64 bytes [built] [code generated]
./src/math.js 46 bytes [built] [code generated]
webpack 5.65.0 compiled successfully in 162 ms
- 결과물이 ./dist/main.js 경로에 생성된 것을 확인할 수 있습니다.
- 주의해야 할점! 4버전에서는
"--output ./dist/main.js"
-> 경로/파일명.js 로 생성됐지만 5버전부터는 경로로 인식하는 것 같습니다. - 따라서
"./dist/main.js"
라고 입력하면 -
"./dist/main.js(폴더)/main.js(js)"
로 결과물이 생성됩니다.
결과 :
webpack.config.js 파일로 실행
- 기본적으로 webpack은
./webpack.config.js
설정 파일이 있는지 찾고 있으면 파일을 읽습니다.const path = require('path'); module.exports = { mode : 'development', entry : { main : './src/app.js' }, output : { path : path.resolve('./dist'), filename : '[name].js' } }
- scripts에
build
라는 명령어를 등록합니다.build
명령어는 webpack을 실행시킵니다.{ "name": "webpack-demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build" : "webpack" }, "author": "", "license": "ISC", "devDependencies": { "webpack": "^4.41.5", "webpack-cli": "^3.3.10" } }
-
"npm run build"
로 webpack 실행
>npm run build
> webpack-demo@1.0.0 build
> webpack
asset main.js 4.09 KiB [emitted] (name: main)
runtime modules 670 bytes 3 modules
cacheable modules 113 bytes
./src/app.js 65 bytes [built] [code generated]
./src/math.js 48 bytes [built] [code generated]
webpack 5.65.0 compiled successfully in 203 ms
-
".\node_modules\.bin\webpack"
파일을 실행해도 결과는 같습니다.
>.\node_modules\.bin\webpack
asset main.js 4.09 KiB [emitted] (name: main)
runtime modules 670 bytes 3 modules
cacheable modules 113 bytes
./src/app.js 65 bytes [built] [code generated]
./src/math.js 48 bytes [built] [code generated]
webpack 5.65.0 compiled successfully in 150 ms
결과 :