webpack----开发服务器

news2024/12/27 6:28:14

文章目录

  • devServer
  • 抽取css
  • css的兼容性
  • 压缩css
  • js语法检查
  • js的兼容性

devServer

  • 每次编辑源码后,都要webpack重新打包,才能看到效果,麻烦!
  • 使用webpack-dev-server 自动打包编译源码
  • 配置
// webpack.config.js
...
mode: "development",
devServer:{
	//contentBase: resolve(__dirname, "build"), //构建目录
	static: { //新版的打包路径
		directory: resolve(__dirname, "build")
	}
	compress: true, //开启gzip
	port: 3000,  //服务监听端口
	open: true //自动打开浏览器
}
  • 安装及使用
npm install -D webpack-dev-server

# 启动开发服务器
webpack-dev-server

devServer可用选项:
在这里插入图片描述
 

抽取css

  • 为防止打包的js包太大,可以将css样式抽取出形成单独的.css文件;
  • 使用mini-css-extract-plugin
  • 安装并配置
# 安装
npm install mini-css-extract-plugin -D

# 配置
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
...

module: {
        rules: [
        {
            test: /\.css$/,
            use: [
                // "style-loader",
                MiniCsssExtractPlugin.loader, // 将css抽取出来,使用link引入
                 "css-loader"
                ]
        },
        ]
}
plugins: {
	new MiniCssExtractPlugin({
		filename: "css/index.css"
	})
}
  • 编写html页面内容,每个元素加id/class即可

 

css的兼容性

  • 使用postcss解决
  • 依赖postcss-loader postcss-preset-env
  • 安装并配置
# 安装
npm install -D postcss-loader postcss-preset-env

# 配置package.json
...
"browserslist": {
	"development": [
		"last 1 chrome version",  //兼容最新的一版
		"last 1 firefox version"
	],
	"production":[
		">0.2%", //兼容所有
	]
}



# 配置webpack.config.js
// 设置 node进程 环境变量,默认是生产环境
process.env.NODE_ENV="development"
...
//css-loader后面添加
{ // 根据browserslist 中的兼容性处理css
loader: "postcss-loader",
options: {
	indent: "postcss",
	plugins:() =>{
		require("postcss-preset-env")()
	}
}
}

可以使用css中display:flex + 生产环境下 测试打包,查看生成的css文件。

压缩css

  • 使用optimize-css-assets-webpack-plugin
  • 配置
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
...
plugins: [
	...
	new OptimizeCssAssetsWebpackPlugin()
]

js语法检查

  • 依赖1 - eslint eslint-loader (旧版本)
  • 依赖2 - eslint-config-airbnb-base; eslint-plugin-import
  • 配置
# 配置package.json   可以到github/topics/javascript看看
"eslintConfig":{
	"extends": "airbnb-base"
}

#webpack.config.js 在module>rules 添加
{
	test: /\.js$/, //只检查自己的js源码
	exclude: /node_modules/,
	loader: "eslint-loader",
	options: {
		fix: true, //检查到格式问题,自动修复 注意:生产环境中不能使用console.log打印
	}
}
  • 编写js,并打包测试
    入口文件 index.js

  • 报错:
    在这里插入图片描述
    eslint 弃用eslint-loader,使用eslint-webpack-plugin

  • 解决问题:

# 安装
npm install -D eslint eslint-webpack-plugin


const EslintWebpackPlugin = require("eslint-webpack-plugin")
#webpack.config.js plugins中使用插件
plugins: [
	...
	new EslintWebpackPlugin({
            context: resolve(__dirname), //根目录
            extensions: "js", // 需要检查的扩展名
            exclude: "node_modules", //需要排除的目录,相对于根目录
            fix: true, //自动修复
        })
]

成功解决。

在这里插入图片描述
eslint-webpack-plugin 配置
 

js的兼容性

pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell中的for循环和if判断

一.编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如: test1、test2、test3、.....、 test10 1.创建脚本for1.sh [rootserver ~]# vim for1.sh 2.编写脚本for1.sh 3.执行脚本for1.sh [roo…

linux命令----- mkdir与rmdir

创建与删除目录 一 mkdir1.mkdir 目录名2.mkdir -p 目录一/目录二 二 rmdir1.rmdir 目录名2.删除非空目录时失败3. rmkdir -p 目录1/目录2 一 mkdir mkdir是make directories的缩写,主要用于linux中创建目录 创建的目录不能和同级目录中已经存在的目录重名可以mkd…

【产品经理】系统上线自查清单

产品上线之前的准备工作,看起来简单,实际做起来是非常繁杂的,如果没有尽早考虑和准备,可能会手忙脚乱甚至导致产品延迟上线。 产品上线前的准备工作听起来简单,但实际做起来非常繁杂。除了要考虑用户需求、商业需求外&…

计算广告(十八)

营销组合模型 MMM 分析背景 随着媒体类型和销售渠道的不断变化,客户旅程日益复杂化。单一活动层面的优化已无法满足客户需求。为了应对这一挑战,品牌方需在战略和活动层面构建完整的营销视图,优化各营销渠道间的效率并实现最高投资回报率。…

【BIM+GIS】ArcGIS Pro3.0打开多种格式三维模型案例教程

本文讲解在ArcGIS Pro3.0打开BIM模型(.rvt)、倾斜模型OSGB、Sketchup(.skp)、3d max(.3ds)、点云数据(.las)的方法及注意事项。 文章目录 一、ArcGIS Pro打开BIM(.rvt)二、ArcGIS Pro打开倾斜OSGB三、ArcGIS Pro打开Sketchup(.skp)四、ArcGIS Pro打开3d max(.3ds)…

C++ [模板]

本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 泛型编程 问题引入 泛型 函数模板 概念 格式 使用方式 模板原理 模板的实例化 隐式实例化 显示实例化 模板匹配规则 类模板 类模板定义格式 类模板的实例化 非类型模板参数 …

【13 Listener 学习笔记】

Listener 笔记记录 1. Listener监听器2. 监听对象的监听器2.1 ServletContetListener2.2 HttpSessionListener2.3 ServletRequestListener 3. 监听域对象属性变化的监听器3.1 ServletContextAttributeListener3.2 HttpSessionAttributeListener3.3 ServletRequestAttributeList…

每日一个小技巧:如何去水印而不损图片?赶紧学起来

在数码时代中,照片的处理与分享已经成为了我们日常中不可或缺的一部分。但是,大家在网上保存的图片常常会带有水印,非常影响图片的观赏性。水印旨在防止照片被盗用或侵权,但有时候它也很破坏照片的美感,因此许多人都在…

超级实用的C++学习网站

重要说明:该博客长期更新,方便读者查阅! 一、参考资料 学习C这几个网站足矣 二、C学习网站 C中文网 cppreference 当之无愧的C学习第一网站。该网站希望给程序员提供一个关于C和C的完整的在线参考,所以它的内容非常的丰富。有…

动态类型语言、静态类型语言、强类型语言、弱类型语言解释

首先要明确这些名词都是针对数据类型展开的各自定义,同样针对数据类型在编译时和运行时会有一些限定或者规则存在。动态类型语言不能等同于弱类型语言,静态类型语言也不能等同于强类型语言。 静态类型语言和动态类型语言放到一个维度来进行评价类型系统&…

ClickHouse物化视图

目录 1 概述1.1 物化视图与普通视图的区别1.2 优缺点1.3 基本语法 2 案例实操2.1 准备测试用表和数据2.2 创建物化视图2.3 导入增量数据2.4 导入历史数据 1 概述 ClickHouse 的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没…

MYSQL---主从同步概述与配置

一、MYSQL主从同步概述 1、什么是MySQL主从同步? 实现数据自动同步的服务结构 主服务器(master): 接受客户端访问连接 从服务器(slave):自动同步主服务器数据 2、主从同步原理 Maste:启用binlog 日志 Slave:Slave_IO: 复制master主…

CPU寄存器的分类与Intel 8086 的eax,ebx,ecx,edx

目录 一、CPU中的寄存器分类 1.用户可见寄存器 2.控制和状态寄存器 一、CPU中的寄存器分类 大致分为两类: 一类属于用户可见寄存器,对这类寄存器编程,以及通过优化使CPU因使用这类寄存器,而减少对主存的访问次数, 另一类属于控…

MPRC086444-005对其进行维护和管理,以确保系统的稳定性和可靠性。

​ MPRC086444-005对其进行维护和管理,以确保系统的稳定性和可靠性。 变电站自动化系统优缺点 变电站自动化系统结构 变电站自动化系统优缺点 变电站自动化系统是以计算机技术、自动控制技术及通信技术为核心,对变电站及配电系统各个环节进行自动化控制和…

自动化生成持久化游戏管理器

自动化生成持久化游戏管理器 引言游戏管理器持久化自动化生成游戏管理器Addressables 引言 自动化生成的持久化游戏管理器是一个指通过使用自动化工具和技术来生成游戏的持久化管理器的过程。持久化管理器是负责管理游戏状态的组件,包括存储和检索游戏数据的功能&a…

GPT3 和它的 In-Context Learning

作者 | 太子长琴 整理 | NewBeeNLP 大家好,这里是NewBeeNLP。ChatGPT 的爆火让很多 NLPer 大吃一惊,焦虑感爆棚,它的思路和方法都不复杂,但效果却出奇的好。 我想任何研究成果的爆发都不可能是一蹴而就的,期间必然包含…

【历史上的今天】4 月 18 日:第一款交互式电子游戏;IBM 率先研发兆位芯片;硬件公司 Roland 成立

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 18 日,在 1955 年的今天,著名物理学家爱因斯坦在美国新泽西州的普林斯顿逝世。爱因斯坦于 1905 年获得物理学博士学位&#xff0c…

vue---双向绑定

目录 1、.sync修饰符-双向绑定 2、v-model修饰符-双向绑定 3、双向绑定原理 vue 中的双向绑定是语法糖。 1、.sync修饰符-双向绑定 . vue是单向数据流的。父组件可以通过prop向子组件传递数据。子组件需要通过自定义事件来将自己的数据变更通知给父组件,我们可以通过…

分布式任务调度系统分析

背景介绍 首先,我们来思考一些几个业务场景: XX 信用卡中心,每月 28 日凌晨 1:00 到 3:00 需要完成全网用户当月的费用清单的生成XX 电商平台,需要每天上午 9:00 开始向会员推送送优惠券使用提醒XX 公司,需要定时执行…

多线程并发编程学习笔记9(小滴课堂)------线程池及Executor框架

它只会使用10个线程。因为我们设置了它的容量。 我们现在把这个队列容量设置为20. 我们可以看到这里它使用了20个线程。但是出了异常,这个后面我们会学习。 我们现在使用一下我们的callable: 一般我们如果是想在线程执行完以后,获得一个返回…