# webpack-dev-server

개발환경에서 js를 빌드하고 어떤 html에서 해당 스크립트를 불러온다고 했을때,

단순히 html을 file 프로토콜로 열게되면, 브라우저의 same origin policy에 의해 불러올 수 없는 경우(상위 폴더가 같은경우만 허용)도 있습니다.

해결하려면 빌드 후 nodejs http-server 패키지를 사용하거나, 웹서버를 이용해서 띄우거나, was를 개발하거나해서 http프로토콜로 프로젝트를 실행합니다.

여러가지 방법이 있지만 모두 번거롭고, 매 프로젝트마다 이렇게 하긴 정말 피곤한 일 입니다.

그것을 해결해주는 것이 webpack-dev-server입니다.

결국 nodejs 위에서 실행되는것이겠지만, 직접 개발할 필요도 없고, webpack의 플러그인이므로 아래와 같이 간편하고 설정, 사용할 수 있다는 장점이 있습니다.

또 하나의 장점으로는 클라이언트측 코드를 수정하면 hot-loader 기능으로 자동으로 리로드됩니다.

document를 보면 스크롤해야 할 정도로 기능도 많습니다.

// webpack.config.js

devServer: {
  contentBase: __dirname + "docs",
  inline: true,
  hot: true,
  host: "localhost",
  port: 8080
},
{
  ...,
  "start": "webpack-dev-server"
}
//npm start

# webpack-dev-server Proxy

webpack-dev-server의 정말 유용한 기능중 하나인 proxy도 마찬가지로 브라우저의 same origin policy때문에 개발됐습니다.

백엔드에서 처리해주지않는 이상 프로토콜 도메인 포트번호중에 하나라도 다르면 프론트단에서 백엔드 API와 통신할 수 없는데,

로컬에서 서버를 하나띄워놓고 API를 대신 호출하는 방식으로 cors의 불편함을 해소시켜줍니다.

아래와 같이 간단하게 사용할 수 있습니다.

devServer: {
  proxy: {
    '/api': {
      target: 'http://localhost:3000',
      pathRewrite: {'^/api' : ''}
    }
  }
}

ref: https://webpack.js.org/configuration/dev-server/

https://webpack.js.org/configuration/dev-server/#devserverproxy

https://developer.mozilla.org/ko/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs