Webpack 대 webpack-dev-server 대 webpack-dev-middleware 대 webpack-hot-middleware 대 etc


95

나는 작업을 시작하고 webpackA를 node/express개발 환경 ReactJS과 서버 측 렌더링 응용 프로그램을 react-router. dev 및 prod (런타임) 환경에서 각 웹팩 패키지의 역할에 대해 매우 혼란 스럽습니다.

내 이해에 대한 요약은 다음과 같습니다.

webpack: 웹 애플리케이션의 여러 부분을 결합한 다음 단일 .js 파일 (일반적으로 bundle.js)로 묶는 패키지 인 도구 입니다. 결과 파일은 응용 프로그램에서로드 할 prod 환경에서 제공되며 코드를 실행하는 데 필요한 모든 구성 요소를 포함합니다. 기능에는 코드 축소, 축소 등이 포함됩니다.

webpack-dev-server: 웹 사이트 파일을 처리 하는 서버 를 제공하는 패키지입니다 . 또한 bundle.js클라이언트 구성 요소에서 단일 .js 파일 ( )을 빌드 하지만 메모리에서 제공합니다. 또한 -hot모든 빌드 파일을 모니터링하고 코드 변경시 메모리에 새 번들을 빌드하는 옵션 ( )이 있습니다. 서버는 브라우저에서 직접 제공됩니다 (예 :) http:/localhost:8080/webpack-dev-server/whatever. 인 메모리 로딩, 핫 프로세싱 및 브라우저 서비스의 조합을 통해 사용자는 코드가 변경 될 때 브라우저에서 애플리케이션을 업데이트 할 수 있으므로 개발 환경에 이상적입니다.

위의 내용에 의문이 있으시면 아래 내용이 확실하지 않으니 필요한 경우 알려 주시기 바랍니다.

webpack-dev-serverwith node/express을 (를 webpack-dev-server) 사용할 때 일반적인 문제 는있는 그대로 서버라는 것입니다 node/express. 따라서이 환경은 클라이언트와 일부 노드 / 익스프레스 코드 (API 등)를 모두 실행하기가 까다 롭습니다. 참고 : 이것은 내가 직면 한 문제이지만 더 자세히 설명하는 이유를 이해하면 좋을 것입니다.

webpack-dev-middleware: webpack-dev-server(인 메모리 번들링, 핫 리로딩) 과 동일한 기능을 가진 미들웨어 이지만 server/express애플리케이션에 삽입 할 수있는 형식입니다 . 그런 식으로 webpack-dev-server노드 서버 내부에 일종의 서버 ( )가 있습니다. 죄송합니다 : 이건 미친 꿈인가요 ??? 이 작품은 어떻게 개발 및 생산 방정식을 풀고 삶을 더 단순하게 만들 수 있습니까?

webpack-hot-middleware:이 ... 여기에 갇혀 ... 찾고있을 때이 조각을 찾았 webpack-dev-middleware습니다. 사용 방법을 모릅니다.

ENDNOTE : 죄송합니다. 잘못된 생각이 있습니다. 복잡한 환경에서 이러한 변종을 이해하려면 정말 도움이 필요합니다. 편한 경우 전체 시나리오를 구축 할 패키지 / 데이터를 더 추가하십시오.


2
여기에 나열된 패키지는 프로덕션의 서버 측에서 사용되지 않으며 개발자 도구 일뿐입니다. 사용자 정의 개발 서버를 작성 하려면 webpack-dev-middleware(그리고 잠재적으로 webpack-hot-middleware) 사용 합니다. 원하는 특정 기능이없는 경우가 아니면 해당 기능을 webpack-dev-server사용해야합니다.
Joe Clay

답변:


120

webpack

설명했듯이 Webpack은 모듈 번 들러이며 주로 브라우저에서 실행할 수 있도록 다양한 모듈 형식을 번들로 제공합니다. CLINode API를 모두 제공합니다 .

webpack-dev-middleware

Webpack Dev Middleware는 개발 중에 번들 의 최신 컴파일 을 제공하기 위해 익스프레스 서버에 마운트 할 수있는 미들웨어입니다 . 이것은 감시 모드webpack 에서의 Node API 를 사용하고 파일 시스템에 출력하는 대신 메모리에 출력합니다 .

비교를 위해 express.static프로덕션에서이 미들웨어 대신 비슷한 것을 사용할 수 있습니다 .

webpack-dev-server

Webpack Dev Server는 그 자체로 최신 번들을 제공하고 클라이언트에서 라이브 모듈 업데이트에 대한 HMR (핫 모듈 교체) 요청을 추가로 처리 하는 데 사용 하는 익스프레스 서버 입니다 webpack-dev-middleware.

webpack-hot-middleware

Webpack Hot Middleware는 대안 webpack-dev-server이지만 서버 자체를 시작하는 대신 기존 / 사용자 정의 Express 서버에 함께 마운트 할 수 있습니다 webpack-dev-middleware.

또한...

webpack-hot-server-middleware

더 많은 것을 혼동 하기 위해, 서버 렌더링 앱의 핫 모듈 교체를 처리 webpack-dev-middleware하고 함께 사용하도록 설계된 Webpack Hot Server Middleware도 있습니다 webpack-hot-middleware.


2
프론트 엔드 대 백엔드 핫 모듈 교체 분석을 찾는 분 은 다음 게시물을 참조하십시오. stackoverflow.com/questions/46086297/… Xlee는 각 측면의 요구 사항을 잘 설명하고 있습니다. , 업데이트 된 자바 스크립트 번들에서로드 할 수있는 프런트 엔드.
abelito

9

2018 년 업데이트 기준으로 공식 GitHub 페이지webpack-dev-server 참고 사항을 고려합니다 .

유지 보수중인 프로젝트 webpack-dev-server는 현재 유지 보수 전용 모드이며 가까운 시일 내에 추가 기능을 허용하지 않을 것입니다. 대부분의 새로운 기능 요청은 Express 미들웨어로 수행 할 수 있습니다. 문서에서 이전 및 이후 후크 사용을 살펴보십시오.

웹팩 HMR을 구축하기위한 자연스러운 선택은 무엇입니까?


2
또한 Use webpack-serve for a fast alternative. Use webpack-dev-server if you need to test on old browsers.그래서 당신은 webpack-serve 시도하고 싶을 수도 있습니다 .
Bruce Sun

3
유지 관리 노트가 제거되었습니다. 그래서 또 추천하는 것 같아요 ??? 그토록 중요한 개발 도구에 끔찍한 유지 관리 팀이 있다는 사실에 놀랐습니다.
선장 Fogetti

5
webpack-serve는 더 이상 사용되지 않으며 @CaptainFogetti가 말했듯이 유지 관리 노트가 오늘부터 webpack-dev-server에서 제거되었습니다
Anoop D
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.