모듈이란 프로그래밍 관점에서 특정 기능을 갖는 작은 코드 단위
웹팩에서의 모듈은 자바스크립트 모듈에만 국한되지 않고 웹 어플리케이션을 구성하는 모든 자원을 의미한다. 파일 하나하나가 모두 모듈
일반적인 js 코드를 위한 코드다 살펴보면 <head>
부분에 script
를 넣어 각각 파일안에 "word"라는 변수를 넣어 'Hello"와 'World'라는 데이터를 넣었다.
그렇다면 화면에는 당연하게도 'world' 라는 텍스트만 나오게 된다. 이유는 덮어 쓰였기 때문이다. 그럼, 수천개 수만개의 파일과 코드가 있을 때 아무리 변수명을 다르게 주려고 해도 시간적 경과와 많은 오류를 야기 시키기에 이러한 문제들을 타개하기 위하여 모듈이라는 개념이 나오게 된 것이다.
export default
와 import
가 추가 되었다. 이로인해, 해당 파일에서만 사용되는 변수로 모듈화 시킬 수 있다. 실제로 개발자 도구에서 word를 찾으면 undefined로 나온다.entry
속성은 웹팩에서 웹 자원을 변환하기 위해 필요한 최초 진입점이자 자바스크립트 파일 경로
module.exports = {
entry : "./src/index.js"
}
웹팩을 돌리고 난 뒤 결과물의 파일 경로를 의미
module.exports = {
output : {
filename : 'bundle.js'
path: path.resolve(__dirname,'./dist')
}
}
entry
속성과는 다르게 객체 형태로 옵션들을 추가해야 한다.filename
속성은 웹팩으로 빌드한 파일의 이름을 의미, path
속성은 해당 파일의 경로 path
속성에서 사용된 path.resolve()
코드는 인자로 넘어온 경로들을 조합하여 유효한 파일경로를 만들어 주는 Node.js API"프론트엔드 프레임워크에서 가장 많이 사용되는 모듈 번들러" 모듈 번들러란 웹 어플리케이션을 구성하는 자원(HTML,CSS,Js,Images)을 모두 각각의 모듈로 보고 이를 조합해서 병합된 하나의 결과물을 만드는 도구
npm init
으로 이 프로젝트의 pakage를 만든다.npm install -D webpack weback-cli
로 웹팩을 설치 해 준다. -D
는 개발을 위한 설치 파일이라는 것을 명시 해 준다.index.js
파일을 만들어 해당 import되는 내용들을 담고 사용한다. 이 파일은 입구에 해당되며 이것을 entry(엔트리)라고 부른다.npx webpack으로 시작되며 --entry "입구에 해당되는 파일명" --output "출력되어 반환될 파일명"
으로 실행 시킨다.npx webpack --config webpack.config.js
로 실행한다.웹팩은 js뿐만 아니라 css,png도 번들링을 해준다. 그렇게 구동될 수 있게 해주는 것이 로더!
웹팩의 도큐먼트 가이드에서 Asset을 보면 css를 번들링을 할 수 있는 가이드가 나와있다.
test는 정규식 코드의 양식을 지켜주고 "css"라는 키워드가 있는 경로를 찾아
"use" 는 말 그대로 저 로더 형식으로 번들링이 되게끔 만드는 것이다. css-loader로 로더가 되게끔 만들고 style-loader로 스타일이 적용되게 끔 만드는 것
entry: {
// index,about이라는 이름의 키를 만들어 엔트리를 여러개를 생성한다.
index : './index.js',
about: './about.js'
},
output : {
// 여러가지 엔트리가 있을 때 대괄호 []에 name을 넣어 여러가지 아웃풋을 만든다.
filname:'[name]_bundle.js'
}
npm init
를 통해 초기화를 진행npm install -D react react-dom
npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader
리액트는 ES6를 사용하기 때문에, 여러 브라우저에서 사용할 수 있게 ES5로 변경 해 준다.
ES6를 ES5로 변환하고, 브라우저에 알아서 컴파일을 진행한다.
리액트 jsx 문법을 Js로 변경
자바스크립트 파일을 babel preset/plgins과 webpack을 사용하여 es5로 컴파일 해주는 plugin
npm install --save-dev webpack webpack-dev-server webpack-cli html-loader css-loader node-sass sass-loader html-webpack-plugin mini-css-extract-plugin
모든 리액트 파일을 하나의 컴파일된 하나의 자바스크립트 파일에 넣는 역할
개발환경에서 바로 확인을 할 수 있다 (live-reload)
build 스크립트를 통해 webpack 커맨드를 사용하기 위해서
html, css, sass를 위한 로더
html과 css를 위한 플러그인
Ref : 생활코딩 : https://opentutorials.org/module/4566
https://velog.io/@jeff0720/React-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD%EC%9D%84-%EA%B5%AC%EC%B6%95%ED%95%98%EB%A9%B4%EC%84%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-Webpack-%EA%B8%B0%EC%B4%88#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0