接上一篇webpack4.0配置记录(1),继续记录学习webpack配置。

定义环境变量

new Webpack.DefinePlugin({//用来定义全局环境变量DEV:JSON.stringify('dev'),FLAG:'true'
}),

webpack简单优化

  1. noParse
module:{noParse:'/jquery/',//不去解析设置的包所依赖的关系,如jquery
}
  1. ignorePlugin
module:{noParse:'/jquery/',//不去解析设置的包所依赖的关系rules:[{test:/\.js$/,exclude:/node_modules/,include:path.resolve('src'),use:{loader:'babel-loader',options:{presets:['@babel/preset-env','@babel/preset-react']}}}]
}

通过exclude排除和include包含某些模块
另外也可以使用webpack自带的ignorePlugin插件排除某些包,减少体积。

new webpack.IgnorePlugin(/\.\/locale/,/moment/),

以上配置忽略了时间格式化moment.js中的语言包

  1. happypack多线程打包
let Happypack=require('happypack')
...
module.exports={module:{noParse:'/jquery/',//不去解析设置的包所依赖的关系rules:[{test:/\.js$/,exclude:/node_modules/,include:path.resolve('src'),use:'Happypack/loader?id=js'// use:{//     loader:'babel-loader',//     options:{//         presets:[//             '@babel/preset-env',//             '@babel/preset-react'//         ]//     }// }}]},plugins:[new Happypack({id:'js',use:[{loader:'babel-loader',options:{presets:['@babel/preset-env','@babel/preset-react']}}]})]
}
  1. webpack内置功能

(1)tree-shaking
(2)scope-hosting
这两项优化只在生产环境下有效

  1. 抽离公共代码
module.exports={optimization:{splitChunks:{//分割代码块cacheGroups:{//缓冲组common:{chunks:'initial',minSize:0,//抽离模块最小粒度是0minChunks:2//表示代码块用过2次以上就要抽离},vendor:{priority:1,//相当于权重,先抽离第三方模块,如果不设置该属性,分割代码块将从上到下,无法抽离第三方模块。test:/node_modules/,chunks:'initial',minSize:0,//抽离模块最小是0minChunks:2//表示用过2次以上就要抽离}}}},
}
  1. 文件热更新
devServer:{hot:true
},
plugins:[new webpack.NamedModulesPlugin(),//打印更新的模块路径new webpack.HotModuleReplacementPlugin()//热更新
]

7.可以使用dllPlugin动态链接库优化
DllPlugin 和 DllReferencePlugin提供了以大幅度提高构建时间性能的方式拆分软件包的方法。原理是将特定的第三方NPM包模块提前构建,然后通过页面引入。这不仅能够使得vendor文件可以大幅度减小,同时,也极大的提高了构件速度。网上别的大神有一篇文章写的很详细,可以参考,传送门。

以上就是一些自己在学习webpack4.0配置过程中的一些学习记录,写出来和大家分享,如果有错误,还望告知。个人博客同步更新,欢迎关注交流!不要忘了点个赞,谢谢!

webpack4.0配置记录(2)相关推荐

  1. ROS入门 TX2+Turtlebot+Kinect2.0配置记录

    首先是刷机,本人使用的是虚拟机,此处一坑,使用VMware一定要选择新版本的,旧版本的功能不稳定,容易卡死.装ros-Kinect版对应的是ubuntu16.0,所以虚拟机也用的ubuntu16.0, ...

  2. 史上最走心的Webpack4.0中级教程——配置之外你应该知道事

    [摘要] <webpack4.0各个击破系列>适合不满足于只会配置webpack但一时间又看不懂源码的中级读者.我没法保证这个系列是最好的,但至少能保证每一篇博文都跟那些Ctrl+C和Ct ...

  3. Webpack4.0 升级配置

    本文首发于 dawei.lv 本文基于 webpack 4.8.1 吐槽 webpack 彪版本号的速度真是飞快,4.0 发布没多久上去看的时候才 4.1.*,现在已经刷到 4.8.1 了,给人一种& ...

  4. webpack4.0各个击破(2)—— CSS篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  5. 前端工具webpack4.0各个击破——html部分

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  6. webpack4.0各个击破(10)—— Integration篇

    [摘要] webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点 ...

  7. webpack4.0各个击破(9)—— karma篇

    [摘要] webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点 ...

  8. webpack4.0各个击破(8)—— tapable篇

    [摘要] webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点 ...

  9. webpack4.0各个击破(7)—— plugin篇

    [摘要] webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点 ...

最新文章

  1. mysql中如何设置过滤器_mysql – 使用计数器实现过滤器
  2. Nagios监控部署(四)--被监控主机配置
  3. UGUI的优点新UI系统三效率高效果好
  4. mongodb java 地理位置_Mongodb地理位置索引
  5. 南外计算机课,南外小升初,怎么考?
  6. VTK:邻接矩阵到 EdgeTable用法实战
  7. torchvision中Transform的normalize
  8. 封装(构造方法,构造器)
  9. 【CodeForces 504A】Misha and Forest
  10. 自定义手势--输入法手势技术
  11. php常用的函数总结
  12. csdn专用必杀技----谷歌浏览器插件
  13. idea中设置字体大小
  14. maven(2)——修改maven的setting.xml文件,更改下载地址和镜像
  15. 【百科】喜马诺变速器
  16. 吴恩达深度学习课程-Course 4 卷积神经网络 第一周 卷积神经网络编程作业(第一部分)
  17. JavaScript 的 Math.floor() 函数
  18. ARM的memory Compiler总结
  19. 深度学习入门笔记(九):深度学习数据处理
  20. 三国杀开源系列之四-工程目录分析107@365

热门文章

  1. float浮动,定位
  2. 【UOJ#246】套路(动态规划)
  3. 学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
  4. BZOJ 2588 Spoj 10628 Count on a tree | 树上主席树
  5. 常见的CSS和HTML面试题
  6. 012.Adding a New Field --【添加一个新字段】
  7. 20144303 20145239 实验三
  8. 对lua协程的一点理解
  9. 什么是套接字?Socket基本介绍
  10. android 播放声音 停止其他,Android AudioManager处理两个播放器同时有声音,停止其中一个播放的问题,暂停其他的播放...