2023-5-24 webpack (devServer配置)

174 阅读2分钟

image.png

devServer的配置只作用于development环境下,publicPath设置为/abc,表明我们在访问本地的dev-server资源的时候,需要 域名 + /abc(即打包后的资源放在了 域名+/abc的下面)

image.png

由于我们在devServer中配置了publicPath,devServer会将打包后的资源放在 域名 + devServer.publicPath下,

而如果我们output.publicPath还是/的话,那么打包后的script标签会加载 域名+ / +bundle.js(静态资源的访问地址),就访问不到对应的静态资源(当前资源地址应该为域名+devServer.publicPath+bundle.js)

总结: 所以通常情况output.publicPath和devServer.publicPath应该设置为相同,保证webpack-dev-server的服务资源能正常访问

image.png

注: 一般devServer的publicPath很少去配置他

image.png

image.png

如图:当我们在html模板中引入外部test.js的时候,我们在本地模板中的html是能正常访问的,但是如果打包过后的html这样引入是访问不到如图的test.js的

image.png

我们可以指定静态资源的文件夹,相当于打包过后去public下的./test.js去访问(如果不设置默认为public)

image.png

image.png

image.png

设置devServer的port,修改端口号

image.png

设置open,当服务运行起来后自动打开浏览器

image.png

设置compress,对服务器资源进行压缩

优点:对JS,CSS资源的压缩率很高,可以极大得提高文件传输的速率,从而提升web性能

缺点:服务端要对文件进行压缩,而客户端要进行解压,增加了两边的负载

image.png

devServer.proxy配代理

image.png

如果我们react路由配置的history模式,那么当我们刷新页面的时候,浏览器会认为我们是在向服务器发送请求,浏览器找不到对应资源则返回404页面。

解决方法:

1.devServer配置historyApiFallback: true. 当浏览器404的时候,webpack-dev-server会自动返回index.html的资源

2.路由设置为hash模式

image.png

historyApiFallback也可以具体配置,匹配到某个路径,就映射具体的html

image.png