webpack-devServer的详细配置

目录结构:

  // 开发服务器环境
  devServer: {
    // 运行代码的目录
    contentBase: resolve(__dirname, "build"),
    // 端口号
    port: 3000,
    // 自动打开浏览器
    open: true
  },

1>  host域名的配置

host: "127.0.0.1",

2> compress启动压缩

配置compress进行服务启动压缩,开启gzip的压缩,开启 gzip之后,内容是原来的21%体积

  compress: true

3> watchContentBase监听目录

告诉 dev-server 监听选项提供的文件。 默认情况下禁用。 启用后,文件更改将触发整个页面重新加载

 watchContentBase: true,

4>  watchOptions监听配置

 watchOptions: {
    // 忽略监听的文件内容
    ignored: /node_modules/
  }

5> clientLogLevel客户端日志

可能会导致日志过于冗余,可以通过将其设置为 'silent' 来关闭日志

 // 客户端信息的配置
  clientLogLevel: "silent"

6>  stats编辑器信息管理

如果需要一些捆绑软件信息,但又不是全部,这可能是一个很好的中间立场。

可能的配置'none' | 'errors-only' | 'minimal' | 'normal' | 'verbose' object

比如值抛出错误信息

 stats: 'errors-only',

7>  quiet的静谧状态

除了显示初始信息之外,什么都不会写入编辑器控制台。 这也意味着来自webpack的错误或警告是不可见的。

 quiet :true

8> proxy的代理

当拥有单独的 API 后端开发服务器并且希望在同一域上发送 API 请求时,代理某些 URL 可能会很有用。

使用后端在 localhost:3000 上,可以使用它来启用代理:

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

现在,对 /api/users 的请求会将请求代理到 http://localhost:3000/api/users

如果不希望传递/api,则需要重写路径:

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

默认情况下,将不接受在 HTTPS 上运行且证书无效的后端服务器。 如果需要,可以这样修改配置:

  devServer: {
    proxy: {
      '/api': {
        target: 'https://other-server.example.com',
        secure: false,
      },
    },
  },

有时不想代理所有内容。 可以基于函数的返回值绕过代理。

在该功能中,可以访问请求,响应和代理选项。

  • 返回 null 或 undefined 以继续使用代理处理请求。
  • 返回 false 会为请求产生 404 错误。
  • 返回提供服务的路径,而不是继续代理请求。
devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        bypass: function (req, res, proxyOptions) {
          if (req.headers.accept.indexOf('html') !== -1) {
            console.log('Skipping proxy for browser request.');
            return '/index.html';
          }
        },
      },
    },
  },

如果想将多个特定路径代理到同一目标,则可以使用一个或多个带有 context 属性的对象的数组:

 devServer: {
    proxy: [
      {
        context: ['/auth', '/api'],
        target: 'http://localhost:3000',
      },
    ],
  },

默认情况下不会代理对 root 的请求。 要启用根代理,应将 devMiddleware.index 选项指定为虚假值:

devServer: {
    devMiddleware: {
      index: false, // specify to enable root proxying
    },
    proxy: {
      context: () => true,
      target: 'http://localhost:1234',
    },
  },

代理时会保留主机头的来源,可以将 changeOrigin 设置为 true 以覆盖此行为:

 devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
      },
    },
  },

 

posted @ 2021-10-27 15:42  keyeking  阅读(6901)  评论(0编辑  收藏  举报