mkdir webpack

npm init -y

npm i -D webpack webpack-cli webpack-dev-server@next

pakage.json 파일 생성후 내부의 script 에 수정

"scripts": {
    "dev": "webpack-dev-server --mode development",
    "build": "webpack --mode production"
  }

--mode 옵션중에 development (개발자 모드이다.)

production(이번모드는 제품모드이다. ) 명시를 해줘야한다.

 

webpack.config.js는 브라우저x nodejs 환경에서 동작

해당 코드 작성 후 npm run build로 폴더네 파일 만들수 있다.

*nodejs환경에서 적용되므로 import 대신 require와 module.exports 사용

entry는 파일을 읽어들이는 진입점, output은 결과물을 반환

__dirname은 nodejs에서 제공하는 전역모듈이며 현재 폴더 위치를 가르킴,

resolve메서드는 nodejs에서 경로를 합쳐서 path라는 절대경로에 전달

entry, output

생성된 파일 제거를 하려면 하단에 clean:true 추가(npm build 는 기존내용 지워지지 않음, clean을 설정하면 기존내용 지우는 역할)

 

webpack.config.js에 out에 path를 따로 지정해주지 않으면 default값으로 dist 폴더 생성되고

entry의 main.js 파일이 자동생성됨

webpack이 프로젝트의 어디로 진입해야하는지 를 설정해주고 

처리가 완료되면 결과물을 어디로 내어주어야하는지를 entry 와 output  이라는 옵션으로 설정을 해줄 수 가있다.

 

entry 같은경우에는 진입점을 하나가아닌 여러개로 설정해줄 수 가있다. 

output 의 path 는 결과물이 반환될  디렉토리를 절대경로로 명시해줘야한다.

__dirname 역할 해당하는 파일의 실제경로 나타내는 nodejs 전역적인 변수이다.

 

output clean

clean 옵션에 true 라는 값을 적게 되면 기본적인 output 의 결과물을 내용을 제거하고 새로운 결과물을 만들 수 있다. 

plugin

개발서버 오픈하기

 

require 함수를 통해서 node_moudes 에서 html-webpack-plugin 을 가지고 와서 할당

npm i -D html-webpack-plugin

const HtmlPlugin = require('html-webpack-plugin');

plugins 구성옵션 추가하고 배열데이터를 할당해주자

첫번째 아이템으로 방금 가지고온 HtmlPlugin 을  new 라는 키워드로 생성자함수 처럼 실행!

에러는 현재 favicon.ico 가 없어서 나오는 에러이다.

 

정적파일 연결

parcel bundler 때 사용한 ico 파일을 그대로 가져와서 사용할려고 한다.

 

기본적인 구조는 parcel bundler 와 다르다 

먼저 루트 경로에 static 폴더생성후 하위폴더로 images 폴더 생성 그후 images 폴더에는 png 파일을 static 폴더에는 ico 파일을 넣어주면 되겠다.

 

새로운 패키지 설치

npm i -D copy-webpack-plugin

설치가 완료 됬다면 마찬가지로 

webpack.config.js 로 이동해서 방금 설치한 copy-webpack-plugin 을  node_modules 에서 불러오도록 하자

그후 plugins 라는 배열데이터의 2번째 아이템으로 new 키워드와 함께 실행해준다.

그리고 역시 copyplugin 의 옵션을 명시해주기 위해서는 생성자 함수의 인수로 

{} 열어주고 들어가서 patterns 옵션을 추가해주고 from: 'static'  부분은 아까 생성한 static 폴더를 가리키는 말이다.

 copyplugin 을 통해서 static 폴더안에있는 내용이 복사가 되서 dist 라는 폴더로 들어갈수 있게 만들어주는 plugin 이다.

 

그후 개발서버를 오픈 npm run dev 해주었다.

하지만 에러 발생 

HookWebpackError: Not supported

 copy-webpack-plugin 및 노드 버전 불일치 때문인 것으로 확인 후 

copy-webpack 을 다운그레이드 해주면 해결될거라 생각하고 다운그레이드 진행

설치된 현재버전!

10버전으로 다운그레이드 해줄려면 될까 싶어서 일단 진행!

 npm i -D copy-webpack-plugin@10

어림도 없었다 ㅎㅎ 

npm i -D copy-webpack-plugin@9

간단한 에러라 말끔히 해결

 

루트 경로에 있는 index.html 파일을 복사해서 dist 폴더안에 생성이 되는데 브라우저에서 보여줄 index.html 은 dist 폴더안에 있기때문에 경로 를 처음부터 저렇게 잡아주면 되겠다. 루트경로에서의 경로를 생각하지말고!

이 부분에서 많이 흥미로웠음 하하

 

 

'bundler' 카테고리의 다른 글

webpack -2  (0) 2022.08.29
Parcel  (0) 2022.08.29

+ Recent posts