devserver配置_03-零基础学webpack4.0之html相关配置

2023-10-27

webpack中html相关配置

如何让我们的文件优雅运行

  • 很多时候我们不希望直接本地打开文件进行访问,而是通过localhost进行访问。这时候就需要我们配置一下就可以实现。

开启我们的server

  • 首先安装一下webpack-dev-server
npm add webpack-dev-server -D
  • 安装完成后执行:
npx webpack-dev-server

  • 会发现生成了http://localhost:8080/,打开发现目前是在根目录下了。
  • 这时候新需求来了:如何直接进入dist文件夹?

配置devServer

  • 首先在package.json文件中配置一个脚本:
  • scripts下增加一行"dev":"webpack-dev-server",完整代码如下:
{
        "name": "webpackdemo",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
            "test": "echo "Error: no test specified" && exit 1",
            "build": "webpack --config webpack.config.js",
            "dev":"webpack-dev-server",
        },
        "keywords": [],
        "author": "",
        "license": "ISC",
        "devDependencies": {
            "webpack": "^4.44.1",
            "webpack-cli": "^3.3.12",
            "webpack-dev-server": "^3.11.0"
        }
    }
  • 然后打开webpack.config.jsmodule.exports里面进行配置:
devServer:{//开发服务器配置
        port:'3002',//端口
        progress:true,//打包进度
        contentBase:'./dist',//访问到dist目录
        compress:true,//开启压缩
    },
  • 完整代码如下
let path=require('path');

    module.exports={
        devServer:{//开发服务器配置
            port:'3002',//端口
            progress:true,//进度
            contentBase:'./dist',
            compress:true,//压缩
        },
        mode:'development',//模式 默认两种 production(生产环境) development(开发环境)
        entry:'./src/index.js',//入口文件
        //output 出口文件
        output:{
            filename:'index.js',//打包后文件名
            path:path.resolve(__dirname,'dist')//必须为绝对路径
        }
    }
  • 这时候再执行npm run dev,我们就会发现开启了http://localhost:3002/端口,并且指向了dist文件夹中的index.html

html文件处理

  • 我们一开始在dist文件夹中是没有index.html文件的,平时写代码index.html可能在src目录下,我们需要webpack帮我们顺便把index.html也放到dist目录下。
  • 首先我们需要安装一个插件:
npm add html-webpack-plugin -D
  • 安装完成后在webpack.config.js中引用:
let HtmlWebpackPlugin=require('html-webpack-plugin')
  • 然后在plugins中配置一下插件:
plugins:[//数组,里面放着所有的webpack插件
        new HtmlWebpackPlugin({
            template:'./src/index.html',//指定文件
            filename:'index.html'//输出文件名字
        })
    ]
  • 完整代码如下:
let path=require('path');

    let HtmlWebpackPlugin=require('html-webpack-plugin')
    module.exports={
        devServer:{//开发服务器配置
            port:'3002',//端口
            progress:true,//进度
            contentBase:'./dist',
            compress:true,//压缩
        },
        mode:'development',//模式 默认两种 production(生产环境) development(开发环境)
        entry:'./src/index.js',//入口文件
        //output 出口文件
        output:{
            filename:'index.js',//打包后文件名
            path:path.resolve(__dirname,'dist')//必须为绝对路径
        },
        plugins:[//数组,里面放着所有的webpack插件
            new HtmlWebpackPlugin({
                template:'./src/index.html',//指定文件
                filename:'index.html'//输出文件名字
            })
        ]
    }
  • 配置完成后执行npm run dev,项目也跑起来了。

压缩html

  • 我们只需在插件再添加两行配置信息即可:
minify:{
    removeAttributeQuotes:true,//删除双引号
    collapseWhitespace:true,//折叠空行
}
  • 同时可以配置一下hash:true,避免缓存,目前完整代码如下:
let path=require('path');

    let HtmlWebpackPlugin=require('html-webpack-plugin')
    module.exports={
        devServer:{//开发服务器配置
            port:'3002',//端口
            progress:true,//进度
            contentBase:'./dist',
            compress:true,//压缩
        },
        mode:'production',//模式 默认两种 production(生产环境) development(开发环境)
        entry:'./src/index.js',//入口文件
        //output 出口文件
        output:{
            filename:'index.js',//打包后文件名
            path:path.resolve(__dirname,'dist')//必须为绝对路径
        },
        plugins:[//数组,里面放着所有的webpack插件
            new HtmlWebpackPlugin({
                template:'./src/index.html',//指定文件
                filename:'index.html',//输出文件名字
                minify:{
                    removeAttributeQuotes:true,//删除双引号
                    collapseWhitespace:true,//折叠空行
                },
                hash:true//避免缓存
            })
        ]
    }
  • 这时候可以打开dist目录下的index.html,格式化一下,看一下js文件后面已经加了hash:

  • 如果想给输出的index.js文件名字加hash来避免缓存,同样在filename后面给输出文件中使用[hash]
filename:'index.[hash].js',//打包后文件名
  • 执行打包命令npm run build,看一下index.js文件名字已经修改。

  • 如果感觉hash有点长,可以修改一下它的位数:
[hash:8]
  • 这样就生成了8位数的哈希值。

总结

我们平时希望项目通过 localhost访问,我们就可以安装 webpack-dev-server,进行项目启动,通过配置 devServer实现项目启动时候直接指向 dist目录。平时写的html可能在src文件夹下,这时候可以通过插件让webpack帮我们吧html也顺带处理一下,以及通过配置 hash来避免缓存问题。
  • 如果你想看之前的文件,可以关注我的知乎专栏:LonJin的知乎专栏。
  • 欢迎点赞收藏!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

devserver配置_03-零基础学webpack4.0之html相关配置 的相关文章

随机推荐

  • 浅析ARM公司在物联网领域的战略布局

    原文地址 http blog csdn net yefanqiu article details 17006331 随着ARM芯片的出货量越来越多 自信满满的ARM公司统一软硬件平台的战略和雄心壮志越来越凸显 最初ARM公司仅是出售自己的知
  • 解决VMware出现“磁盘实用工具不可用”

    可能有人想用vmware的磁盘映射 但是磁盘映射按钮是灰色的 按钮上面还有一行字 磁盘实用工具不可用 我也遇到过这个问题 上网查了一下 结果网上愣是没有一篇博客说明了这个问题 我想 难道这些人从来没遇到过吗 后来 经过自己的实验 我发现了解
  • 一次serialVersionUID引发的血案

    背景 去掉了两个bean类中重写的equals方法 该equals方法只判断id 相同则true 否则false 看了看没有什么地方用到了这个equals 就直接去掉了 测试环境出现异常 org springframework core c
  • sklearn机器学习——day07

    无监督学习 聚类 分类 聚类算法又叫做 无监督分类 其目的是将数据划分成有意义或有用的组 或簇 sklearn当中的聚类算法 有两种表现形式 类 函数 KMeans是如何工作的 重要参数n clusters n clusters是KMean
  • MySQL高级之SQL优化

    福利 网络安全重磅福利 入门 进阶全套282G学习资源包免费分享 https mp weixin qq com s BWb9OzaB gVGVpkm161PMw 5 SQL优化 5 1 大批量插入数据 环境准备 CREATE TABLE t
  • 【Centos】centos7 NFS共享目录(单机版)

    环境介绍 centos 7 三台机器 服务端 192 168 30 13 提供共享目录 客户端 192 168 30 14 192 168 30 15 挂载使用服务端共享路径 此方案为测试环境单机部署方案 服务端一旦挂了就不可用了 生产环境
  • Windows Server 2016-Windows 时间服务概览

    同步 Windows 时间服务 W32Time 的日期和时间的所有运行 Active Directory 域服务 AD DS 的计算机 时间同步至关重要的许多 Windows 服务和的业务线 LOB 应用正常运行 Windows 时间服务使
  • 获取请求地址路径参数

    package gacl request study import java io IOException import java io PrintWriter import javax servlet ServletException i
  • 华为OD机试 - 非严格递增连续数字序列(Java)

    题目描述 输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列的长度 比如12234属于非严格递增连续数字序列 输入描述 输入一个字符串仅包含大小写字母和数字 输入的字符串最大不超过255个字符 输出描述 最长
  • CleanMyMac X 4.13.4许可证激活码2023最新免费版

    小伙伴们 你们好 今天兔八哥爱分享来聊聊cleanmymac X如何激活 关于cleanmymac的基本情况说明介绍的文章 网友们对这件事情都比较关注 那么现在就为大家来简单介绍下 希望对各位小伙伴们有所帮助 在不断更新的版本中 Clean
  • 论文p5解释 Bootstrap开关电路

    M7 M3这种箭头指回去的是P型 这是开关电路 也叫Bootstrap开关电路 所以分析的时候不用考虑是耗尽型或者增强型 只考虑高低电平打开和关闭开关 1 Clks是高电平时 详细分析图如下 最终目的是Cs上极板接到Vdd 下极板接地 于是
  • 如何用Python进行大数据挖掘和分析

    互联网创业离不开数据 如果能自己做个数据爬虫 那岂不是一件很美好的事情吗 其实自己做数据挖掘不是梦 学点Python的基本功能 5步就能让你成为一个爬虫高手
  • 影响力六大原则讲解

    文章目录 写在前面 互惠原则 承诺一致原则 社会认同 喜好 权威 稀缺 写在前面 人虽然是万物之灵 但还是有很多类似动物的本能 受很多其他因素的影响很多时候就像膝跳反射一样本能的发生着 影响着我们做的一个选择 正所谓 一言不合就XX 我们这
  • 【CSDN铁粉】CSDN铁粉增长终极奥义之如何快速破千铁粉

    文章目录 写在前面 涉及知识 1 铁粉是个啥 2 铁粉如何增长 1 持续的优质创作 2 与粉丝周期互动 3 参加活动与比赛 3 铁粉对您的意义 总结 写在前面 其实我也是下午去看那个6月份的城市获奖的名单时候 无意的去看了一下CSDN官方博
  • QuotaExceededError The quota has been exceeded

    一 前言 我首先描述下 这种报错出现的场景 ios lt 10 真机 Safari 的无痕浏览模式 使用localStorage or sessionStorage 的 setItem 当然 问题肯定社区有解决方案 以下链接可以满足你想要的
  • 2019第十届蓝桥杯【c++省赛B组】第九题

    第九题 后缀表达式 标题 后缀表达式 时间限制 1 0s 内存限制 256 0MB 本题总分 25 分 时间限制 1 0s 内存限制 256 0MB 本题总分 25 分 问题描述 给定 N 个加号 M 个减号以及 N M 1 个整数 A 1
  • STM32 CAN通信协议详解—小白入门(二)

    文章目录 一 CAN通信协议简介 二 CAN物理层 2 1 闭环总线网络 2 2 开环总线网络 2 3 通信节点 2 4 差分信号 2 5 CAN协议的差分信号 三 协议层 3 1 CAN的波特率及位同步 3 2 位时序分解 3 3 通讯的
  • Stm32学习笔记,3万字超详细

    Stm32学习笔记 文章目录 Stm32学习笔记 前言的前言 前言 笔记 Stm32 三种开发方式的区别 为什么Stm32初始化外设都需要先打开时钟 GPIO八种模式 Stm32寄存器映射 Stm32中的位段映射 Stm32中的时钟系统 S
  • 猜数游戏 rust解法

    给定答案序列和猜测序列 统计有几个数字位置正确 有几个数字在两个序列都出现过但位置不对 输入包含多组数据 每组第一行是序列长度n 第二行是答案序列 接下来若干行是猜测序列 猜测序列全0时该组结束 n 0时整个输入结束 样例输入 4 1 3
  • devserver配置_03-零基础学webpack4.0之html相关配置

    webpack中html相关配置 如何让我们的文件优雅运行 很多时候我们不希望直接本地打开文件进行访问 而是通过localhost进行访问 这时候就需要我们配置一下就可以实现 开启我们的server 首先安装一下webpack dev se