webpack4一些设置
一.sourceMap: 是一个映射关系,如果出错可以知道实际文件行数出错
在webpack.config.js设置属性
devtool: 'source-map'
在生产环境可以设置为(提醒错误比较全面)
devtool: 'cheap-module-eval-source-map'
在线上环境设置为(比较合适)
devtool: 'cheap-module-source-map'
https://segmentfault.com/a/1190000008315937
https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html
https://www.youtube.com/watch?v=NkVes0UMe9Y
二.@babel 将ES6自动转为ES5,还可设置自动加载ES6函数
三.Tree Shaking: 根据引用的内容自动选择加载内容 但因为是静态引入方式,所以功能只支持ES module,不支持COMMON JS
线上和线下模式打包引入结果不一样,线下模式会全部引入,但是在线上模式只会引入需要的模块.,就是判断只要引入一个模块,就会采用Tree Shaking方式进行打包
在package.json文件中
"sideEffects": ["@babel/polyfill"], 如果有需要特殊处理的模块,比如会忽略对 @babel/polyfill的处理
"sideEffects": false, 如果没有特殊处理的模块,就可以设为false
在webpack.config.js中
optimization: {
usedExports: true
}
四.Code Spliting
4.1t同步代码:
在配置文件webpack.config.js中
optimization: {
splitChunks: {
chunks: 'all'
}
}
4.2异步代码,会自动进行代码分割
首先安装插件 npm install --save-dev @babel/plugin-syntax-dynamic-import
在 .babelrc 中配置plugins加入
{
"plugins": ["@babel/plugin-syntax-dynamic-import"]
}
4.3 SplitChunksPlugin配置
https://webpack.js.org/plugins/split-chunks-plugin/
五.Bundle Analysis 分析工具
https://webpack.js.org/guides/code-splitting/#bundle-analysis
可视化较强的是webpack-bundle-analyzer
六.懒加载
https://webpack.js.org/guides/code-splitting/#prefetchingpreloading-modules
七.CSS打包 MiniCssExtractPlugin
CSS合并和压缩: optimize-css-assets-webpack-plugin
PS:因为不支持HMR,所以只在production模式下使用这个CSS打包压缩功能
八.去除一些性能提醒
在webpack.config.js中添加属性
performance: false,
九.浏览器缓存caching
在配置文件output的打包目录的文件命名上加上 [contenthash] , 会根据文件内容进行hash
十.(在plugins中加入配置)自动引入模块 ProvidePlugin (因为在webpack中模块之间是隔离的)这样可以全局引入
new webpack.ProvidePlugin({
$: 'jquery',
// ...
});
十一.将模块js文件中的this指向window
需要先安装imports-loader
在webpack.config.js中加入代码
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: [
{
loader: "babel-loader",
}, {
loader: "imports-loader?this=>window"
}
]
}
}
十二.全局变量
在package.json文件中 可以设置env全局变量,这样可以直接访问webpack.common.js这一个配置文件中而实现线上和线下模式
"dev-build": "webpack --config ./build/webpack.common.js",
"dev": "webpack-dev-server --config ./build/webpack.common.js",
"build": "webpack --env.production --config ./build/webpack.common.js"
webpack4一些设置的更多相关文章
- webpack4 未设置mode会自动压缩
最近想用LayaBox做个小游戏,然而Laya本身不自带构建工具.然后觉得写模块化的东西还是用webpack好使,用es6的语法也比较清晰. 于是就装了webpack,只用babel-loader来编 ...
- Linux命令总结大全,包含所有linux命令
使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...
- Webpack4 的 Tree Shaking:babel-loader设置modules: false,还是设置"sideEffects": false,待确定
Webpack4 的 Tree Shaking:babel-loader设置modules: false,还是设置"sideEffects": false,待确定 babel-lo ...
- webpack4新特性介绍
导语: webpack是一个JS应用打包器, 它将应用中的各个模块打成一个或者多个bundle文件.借助loaders和plugins,它可以改变.压缩和优化各种各样的文件.它的输入是不同的资源,比如 ...
- webpack4.x配置详解,多页面,多入口,多出口,新特性新坑!!
花了差不多一天多的时间,重新撸了一遍webpack4.x的常用配置. 基本上常用的配置都熟悉了一遍,总体上来讲,为了对parcel进行反击,webpack从4.x开始,正在朝着尽可能的简化配置文件的方 ...
- webpack4:连奏中的进化
webpack4在2月底的时候发布,这次webpack4有了一个名字"Legato",也就是"连奏"的意思,寓意webpack在不断进化,而且是无缝(no-ga ...
- React从入门到放弃之前奏(1):webpack4简介
接触webpack是好久之前的事情了,最近看了下webpack没想到都到4了. webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). 会创建1个 ...
- 带你由浅入深探索webpack4(二)
在前一篇文章已经介绍了webpack4从入门到一些核心常用的用法,大家可以从上一篇文章看起.带你由浅入深探索webpack4(一) 接着上一章,接下来我们会继续探讨webpack4中的各种实用用法,让 ...
- webpack4打包nodejs项目进阶版——多页应用模板
前段时间我写了个打包nodejs项目的文章,点击前往 但是,问题很多.因为之前的项目是个历史遗留项目,重构起来可能会爆炸,当时又比较急所以就写个的适用范围很小的webpack的打包方法. 最近稍微得空 ...
随机推荐
- C51—模拟IIC总线实现EEPROM存取数据
a - 什么是IIC总线 -什么是EEPROM -IIC总线的通信格式 模块化设计注解 整体代码 - 什么是IIC总线 IIC总线是同步通信的一种特殊形式,具有接线口少.控制简单.器件封装形式小.通信 ...
- 🏆【JVM技术专区】「编译技术专题」带你彻底认识Java的编译技术
前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令.这个过程是Java虚拟机做的,这个过程也叫编译.是更深层次的编译. 在编译原理中,把源代码翻译成机 ...
- 计算文件的MD5值和sha256值
1.计算文件的MD5值. 1)linux系统计算 MD5值:md5sum+文件名 sha256值:sha256su+文件名 2)windows系统计算 MD5值:利用Notepad++工具计算 sha ...
- ThreadPoolExecutor(线程池)的参数
构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit u ...
- MyBatis的useGeneratedKeys使用
业务需求,用户表为主键自增,添加完用户之后,通过用户ID和角色表进行关联. 问题:由于主键自增,所以在用户添加之前是不知道ID的,当然可以通过查询得到当前的ID,不过需要自己多一步操作. 解决方案:使 ...
- 菜鸟的springboot常用注解总结
菜鸟的springboot常用注解总结 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用 ...
- 分布式文件系统FastDFS搭建实操
转载---------佳先森--- 一.什么是文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节 ...
- C#多线程实践-锁和线程安全
锁实现互斥的访问,用于确保在同一时刻只有一个线程可以进入特殊的代码片段,考虑下面的类: class ThreadUnsafe { static int val1, val2; static void ...
- vue中v-show和v-if在显示和隐藏元素上的区别
v-show将元素隐藏是在dom节点上加style='display:none' v-if是直接将元素完全去掉 拿v-show示例,(v-if 也是一样,把下面的代码中v-show替换成v-if即可运 ...
- JAVA集合类(代码手写实现,全面梳理)
参考网址:https://blog.csdn.net/weixin_41231928/article/details/103413167 目录 一.集合类关系图 二.Iterator 三.ListIt ...