webpack中devServer的使用及其他配置

Posted coder斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack中devServer的使用及其他配置相关的知识,希望对你有一定的参考价值。

为什么要搭建一个服务

我们在在开发阶段,若每次我们修改代码,想看一下实际效果,我们都要在命令行里面输入,相关命令,重新打包,打包会将其他不变的第三方资源也一起打包,平常这些资源我们是不要去操作的,这样及耗费性能,又使我们的开发效率变得很低,我们可以像VS Code 里的 live server一样,提供一个服务,实现热更新。

文件变化重新更新watch

webpack内就提供了这样的一个功能。

在webpack.config.js内设置

image-20210613081436979

在package.json内配置

image-20210613081257890

但有缺陷,这种方法是可以重新打包,但是并不提供一个服务,当然可以配合 live server使用。但是还是不方便。

webapck-dev-server的基本使用

webpack-dev-server可以提供一个服务,并且实现热更新

安装:npm install webpack-dev-server -D

配置:只需要加上 serve,webpack-cli会帮我们自动去加载 webapck-dev-server

image-20210613082025983

devServer的contentBase的配置

在打包过程中,我们找不到的资源,就到我们指定的目录下寻找。 如下配置

image-20210613082443906

contentBase画图的详细解析

image-20210613083409905

devServer模块热替换的应用(HMR)

我们知道webpack-dev-server已经实现了功能,但是每次我们修改完代码,都会帮我们重新打包,页面会整体的刷新操作,有没有,我们只修改了一个文件,只修改了一部分,但是页面只更新修改部分页面,没修改过的我们就不要动它呢? 这就是模块热替换(HMR)

使用

image-20210613085946601

HMR的原理解析

  • devServer会提供两个服务,一个是用于提供资源的( 短连接 ),另一个是专门用于热模块替换的(长连接)
  • 短链接 :浏览器主动请求资源,服务器基于相应。 长连接:服务器主动发资源给浏览器。
  • 在启动热模块替换后,修改代码,打包完成后,通过长连接对应的服务传给浏览器,由浏览器来对部分页面更新。

image-20210613084652369

devServer的基本配置

  • host:服务的域名
  • port:服务的端口
  • open:是否自动打开浏览器
  • compress:浏览器像服务请求资源,服务器是否压缩发送给浏览器

image-20210613090127610

devServer中proxy的配置

用来服务器代理解决跨域问题

  • target要代理的目标地址,如/home会被代理到http://coderbin.link/api/home
  • pathRewrite:默认情况下,我们的 /api 也会被写入到URL中,如果希望删除,可以使用pathRewrite
  • secure默认情况下不接收转发到https的服务器上,如果希望支持,可以设置为false
  • changeOrigin:我们使用了服务器代理,请求头会有我们原本服务器的地址,要是我们不想再头部信息出现改为true

image-20210613090914117

webpack中reslove的配置

  • extensions:我们再引入资源不加后缀,webpack帮我们匹配后缀的规则。
  • mainFiles:我们引入的是一个文件夹,告诉webpack找文件夹下的什么名字的文件
  • alias:起别名,开发中,可能要将文件一来一去,要是,都要修改引用其他资源的地址,起别名可以直接解决。 后面再 Vue项目工程里面会使用到。

image-20210613092032481

webpack开发环境和生产环境分开

我们一般会把生产环境和开发环境分离开,方便我们管理 公共配置 开发配置生产配置

多个配置文件合并第三方库 webpack-merge

安装 npm install webpack-merge -D

使用

image-20210613093426973

package.json配置修改

image-20210613093520854

以上是关于webpack中devServer的使用及其他配置的主要内容,如果未能解决你的问题,请参考以下文章

配置一个简单的webpack打包,less预编译+devserver热更新

开发服务器devServer配置(webpack)

Webpack 配置

webpack devServer配置项的坑

webpack学习之——创建devServer开发环境

这个 webpack devServer 是怎么配置不正确的?