1️⃣ webpack-dev-server 版本

npm i -D webpack-dev-server

  1. 1. webpack-dev-server 有兼容性 webpack-dev-serve 只兼容 **webpack4** **webpack-cli3 **以下版本是兼容的
  1. "devDependencies": {
  2. "webpack": "^4.46.0",
  3. "webpack-cli": "^3.3.12",
  4. "webpack-dev-server": "^3.11.2"
  5. }
  6. // package.json
  7. "scripts": {
  8. "server": "webpack-dev-server"
  9. },

1️⃣ 当我们执行webpack-dev-server命令后,它做了以下操作

内部执行 webpack 命令,传递命令参数
开启 watch
注册 hooks:类似于 plugin,webpack-dev-server 会向 webpack 中注册一些钩子函数,主要功能如下:

  1. 1. 将资源列表(aseets)保存起来
  2. 2. 禁止 webpack 输出文件

用 express 开启一个服务器,监听某个端口,当请求到达后,根据请求的路径,给予相应的资源内容

1️⃣ webpack-dev-server 配置

  1. module.exports = {
  2. devServer: {
  3. port: 9000, // 配置默认端口
  4. open: true, // 自动打开浏览器 ( 自动打开默认浏览器 )
  5. compress: true, // 启动gzip压缩
  6. index: "index.html", // 默认的要打开的 html 文件
  7. proxy: {
  8. '/api': {
  9. // 当请求 http://localhost:9000/api/xxx 的地址时会更改为 http://www.baidu.com/api/xxx
  10. // 将 /api 之前的协议域名端口号更改为 target 的协议域名端口号
  11. target: 'http://www.baidu.com',
  12. // 如果不希望 /api 包含其中可以做如下配置结果为: http://www.baidu.com/api/xxx ( 将 /api 替换为 '' )
  13. pathRewrite: { '^/api': '' }
  14. }
  15. },
  16. stats: { // stats 控制的是构建过程中控制台的输出内容
  17. // 对于 webpack-dev-server,这个属性要放在 devServer 对象里。
  18. // devServer 的 starts 配置同总体的 starts 设置相同
  19. }
  20. }
  21. }

image.png