webpack5之devServer的常用配置详解

目录
  • 前言
  • 一. contentBase
  • 二. hotOnly、hot、host配置
    • 1. hotOnly、hot
    • 2. host设置主机地址
  • 三. port、open、compress
  • 四. Proxy代理
  • 五. historyApiFallback

前言

devServer是为开发过程中, 开启的一个本地服务,在此总结一些常用的配置。供大家学习,相互成长,相互进步!

一. contentBase

devServercontentBase对于我们直接访问打包后的资源其实并没有太大的作用,但如果我们打包后的资源,又依赖于其他的一些资源,那么就需要指定从哪里来查找这个内容,这时候就需要配置contentBase

举例:

module.exports = {
  mode: "development",
  entry: "./src/index.js",
  output: {
    filename: "bundle.js",
    // 打包后的文件的输出目录
    path: path.resolve(__dirname, "./build"),
    publicPath: "/abc",
  },
  // 专门为webpack-dev-server
  // devServer为开发过程中, 开启一个本地服务
  devServer: {
    publicPath: "/abc",
    }
  }

如上方图所示设置"./why/abc.js",但是这样webpack serve打包后浏览器是无法通过相对路径去找到这个文件夹的

所以应设置为如下:

module.exports = {
  mode: "development",
  entry: "./src/index.js",
  output: {
    filename: "bundle.js",
    // 打包后的文件的输出目录
    path: path.resolve(__dirname, "./build"),
    publicPath: "/abc",
  },
  // 专门为webpack-dev-server
  // devServer为开发过程中, 开启一个本地服务
  devServer: {
**    contentBase: path.resolve(__dirname, "./why"),
**    watchContentBase: true, //实时监听contentBase文件变化
    publicPath: "/abc",
   }
  }

二. hotOnly、hot、host配置

1. hotOnly、hot

hot 启用 webpack 的 热模块替换 特性:

module.exports = {
  //...
  devServer: {
    hot: true,
  },
};

启用热模块替换功能,在构建失败时不刷新页面作为回退,使用 hot: 'only' 或hotOnly:true

module.exports = {
  //...
  devServer: {
    hot: 'only', //hotOnly: true,
  },
};

2. host设置主机地址

默认值是localhost; 如果希望其他地方也可以访问,可以设置为 0.0.0.0;

提示: localhost 和 0.0.0.0 的区别:

localhost:本质上是一个域名,通常情况下会被解析成127.0.0.1;

127.0.0.1:回环地址(Loop Back Address),表达的意思其实是我们主机自己发出去的包,直接被自己接收;

  • 正常的数据库包经常 应用层 - 传输层 - 网络层 - 数据链路层 - 物理层 ;
  • 而回环地址,是在网络层直接就被获取到了,是不会经常数据链路层和物理层的;
  • 比如我们监听 127.0.0.1时,在同一个网段下的主机中,通过ip地址是不能访问的;

0.0.0.0:监听IPV4上所有的地址,再根据端口找到不同的应用程序;

  • 比如我们监听 0.0.0.0时,在同一个网段下的主机中,通过ip地址是可以访问的

三. port、open、compress

port:设置监听的端口,默认情况下是8080,不能设置为null,可以设置自动为auto

module.exports = {
  //...
  devServer: {
    port: 8080,
  },
};

open:告诉 dev-server 在服务器已经启动后打开浏览器。设置其为 true 以打开你的默认浏览器。

module.exports = {
  //...
  devServer: {
    open: true,
    //在浏览器中打开指定页面:open: ['/my-page']
    //提供要使用的浏览器名称,而不是默认名称
  // open: {
      //   app: {
      //  name: 'google-chrome',
    //  },
   // },
  },
};

compress:是否为静态文件开启gzip compression

module.exports = {
  //...
  devServer: {
    compress: true,
  },
};

四. Proxy代理

Proxy是我们开发中非常常用的一个配置选项,它的目的设置代理来解决跨域访问的问题。

举例:

我们的一个api请求是 http://localhost:8888,但是本地启动服务器的域名是 http://localhost:8000, 这个时候发送网络请求就会出现跨域的问题。 所以将请求先发送到一个代理服务器,代理服务器和API服务器没有跨域的问题,就可以解决我们的跨域问题了。

module.exports = {
  //...
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8888',
         pathRewrite: {
          "^/api": ""
        },
        secure: false,
        changeOrigin: true,
      },
    },
  },
};

target:表示的是代理到的目标地址,比如 /api会被代理到 http://localhost:8888/api

pathRewrite:默认情况下,我们的 /api 也会被写入到URL中,即:http://localhost:8888/api, 如果希望删除,可以使用pathRewrite

secure: 默认情况下,将不接受在 HTTPS 上运行且证书无效的后端服务器。 如果希望支持,可以设置为false;

changeOrigin:它表示是否更新代理后请求的headers中host地址,一般设置为true

五. historyApiFallback

historyApiFallback是开发中一个非常常见的属性,它主要的作用是解决SPA页面在路由跳转之后,进行页面刷新 时,返回404的错误。

  • 配置 boolean值:默认是false
module.exports = {
  devServer: {
  //如果设置为true,那么在刷新时,返回404错误时,会自动返回 index.html 的内容;
    historyApiFallback: true,
  },
};
  • 配置 object类型的值,设置rewrites属性: 可以配置from来匹配路径,决定要跳转到哪一个页面;
module.exports = {
  //...
  devServer: {
    historyApiFallback: {
      rewrites: [
        { from: /^/$/, to: '/views/landing.html' },
        { from: /^/subpage/, to: '/views/subpage.html' },
        { from: /./, to: '/views/404.html' },
      ],
    },
  },
};

devServer中实现historyApiFallback功能是通过connect-history-api-fallback库的: For more options and information,查看 connect-history-api-fallback 文档

以上就是webpack5之devServer的常用配置详解的详细内容,更多关于webpack5 devServer配置的资料请关注我们其它相关文章!

(0)

相关推荐

  • Webpack devServer中的 proxy 实现跨域的解决

    Webpack dev server使用http-proxy解决跨域问题 文档资料 webpack关于webpack-dev-server开启proxy的官方介绍 Vue-cli proxyTable 解决开发环境的跨域问题--虽然这篇是写vue的,不过用在webpack-dev-server上也是一样的 http-proxy-middleware--webpack-dev-server的实现方法其实是对这个的封装 配置http-proxy 在webpack的配置文件(webpack.confi

  • Webpack中Source Map配置深入解析

    目录 为什么需要Source Map devtool选项 devtool为false和'eval'有啥区别 准备工作 1,创建项目 安装依赖 2,添加文件 3,写配置 webpack.config.js 4,在package.json中添加 5,执行 npm run build,打包文件生成到了dist文件夹中,至此,准备工作完毕. 观察devtool为false时 1, 在dist/main.js中 2,在浏览器中,观察开发者工具中的Sources. 小结 观察devtool为'eval'时

  • webpack5之output和devServer的publicPath区别示例详解

    目录 一. output的publicPath 二. devServer的publicPath 一. output的publicPath 我们知道output中的path的作用是打包后文件输出的目录:比如静态资源的js.css等输出,常见的会设置为dist.build文件夹等: output中还有一个publicPath属性,该属性是指定index.html文件打包引用的一个基本路径: 它的默认值是一个空字符串,所以我们打包后引入js文件时,路径是 bundle.js: 在开发中,我们也将其设置

  • webpack中的代理配置详解

    目录 作用: 使用场景一: 使用场景二 使用场景三 使用场景四: 使用场景五: 解决跨域原理 vue-cli中proxyTable配置接口地址代理示例 更多参数 作用: 1.解决开发环境跨域问题(不用再去配置nginx和host) 2.如果你有单独的后端开发服务器API,并希望在同域名下发送API请求,那么代理某些URL会很有用 下面介绍一下五种经常使用的场景 使用场景一: 请求到 /api/xxx 现在会被代理到请求 http://localhost:3000/api/xxx, 例如 /api

  • vue cli3配置image-webpack-loader方式

    目录 vue cli3配置image-webpack-loader 使用image-webpack-loader压缩图片报错 vue cli3配置image-webpack-loader vue cli3配置image-webpack-loader对图片进行压缩优化 安装 npm install image-webpack-loader --save-dev 配置vue.config.js chainWebpack: config => {     config.plugins.delete('

  • webpack介绍使用配置教程详解

    目录 一.webpack介绍 1.由来 2.介绍 3.作用 4.拓展说明 5.webpack整体认知 二.webpack安装 1.安装node 2.安装cnpm 3.安装nrm的两种方法 4.安装webpack 三.webpack配置 0.搭建项目结构 1.初始化一个项目(会创建一个package.json文件) 2.在当前的项目中安装Webpack作为依赖包 3.当前项目结构 4.实现CSS打包 5.实现SCSS打包 6.实现Less打包 7.实现打包url资源(图片.gif.图标等)功能 8

  • webpack5之devServer的常用配置详解

    目录 前言 一. contentBase 二. hotOnly.hot.host配置 1. hotOnly.hot 2. host设置主机地址 三. port.open.compress 四. Proxy代理 五. historyApiFallback 前言 devServer是为开发过程中, 开启的一个本地服务,在此总结一些常用的配置.供大家学习,相互成长,相互进步! 一. contentBase devServer中contentBase对于我们直接访问打包后的资源其实并没有太大的作用,但如

  • Maven 命令行打包 和 pom.xml的常用配置详解

    maven 命令行打包 mvn -v, --show-version 现在最新的maven版本是 3.6,我这里用的还是 2017 年下载的 3.1.1 版本(虽然有点过时,但是大版本不变,指令基本一样) mvn -h, --help 使用 help 命令可以看到 maven 命令的帮助文档,下面主要介绍两个常用的指令 -- D 和 P. mvn -D, --define <arg> mvn -DpropertyName=propertyValue clean package 可以用来临时定义

  • redis配置文件中常用配置详解

    此次安装的版本为: 5.0.3 [root@localhost local]# redis-server --version Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=afabdecde61000c3 打开redis.cof NETWORK # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求 bind 127.0.0.1 #是否开启保护模式,默认开启.要是配置

  • 如何使用PyCharm及常用配置详解

    一.Python 的 IDE -- PyCharm 1.1 集成开发环境(IDE) 集成开发环境(IDE,Integrated Development Environment) -- 集成了开发软件需要的大部分工具.一般包括以下工具: 图形用户界面 代码编辑器(支持 代码补全/自动缩进) 编译器/解释器 调试器(断点/单步执行)-- 1.2 PyCharm 介绍 1.PyCharm 是 Python 的一款非常优秀的集成开发环境 2.PyCharm 除了具有一般 IDE 所必备功能外,还可以在

  • vue.config.js常用配置详解

    使用vue-cli3.0搭建项目比之前更简洁,没有了build和config文件夹. vue-cli3的一些服务配置都迁移到CLI Service里面了,对于一些基础配置和一些扩展配置需要在根目录新建一个vue.config.js文件进行配置 module.exports = { // 选项... } 基本路径 baseUrl从 Vue CLI 3.3 起已弃用使用publicPath来替代. 在开发环境下,如果想把开发服务器架设在根路径,可以使用一个条件式的值 module.exports =

  • vue 项目常用加载器及配置详解

    本文介绍了vue 项目常用加载器及配置详解,分享给大家,具体如下: 1.安装sass: 1.1 由于sass-loader依赖于node-sass,所以在安装sass-loader的同时还需安装node-sass npm install --save-dev node-sass npm install --save-dev sass-loader 1.2 安装完成后修改 <style>标签: <style lang="scss"></style> 2

  • hbase shell基础和常用命令详解

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务. 1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase

  • RSync实现文件同步备份配置详解

    一.什么是rsync rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync是用 "rsync 算法"提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件. rsync 包括如下的一些特性: 能更新整个目录和树和文件系统: 有选择性的保持符号链链.硬链接.文件属于.权限.设备以及时间等:

  • Mybatis中 XML配置详解

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <

  • Struts 2中的constant配置详解

    1.<constant name="struts.i18n.encoding" value="UTF-8" /> 指定Web应用的默认编码集,相当于调用 HttpServletRequest的setCharacterEncoding方法. 2.<constant name="struts.i18n.reload" value="false"/> 该属性设置是否每次HTTP请求到达时,系统都重新加载资源文

随机推荐