码迷,mamicode.com
首页 > Web开发 > 详细

Web高级 Webpack编译提速思路

时间:2021-06-06 18:44:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:目的   nic   生产   不同的   方法   抽取   缓存   ad模式   原理   

前段时间实在太忙, 都没时间写博客, 最新稍微好点, 必须安排一个。

思路

项目越来越大,总是感觉编译一次越来越慢,不能忍...

既然想要提速, 就需要知道webpack的整个编译的过程原理, 包括:

  • 输入是什么

  • 编译过程是什么

  • 输出又是什么

输入

先来分析一下输入, 以现在流行的SPA来说, 从入口文件开始可以生成整个项目的依赖树, 那么输入就很清晰了:

  • 业务代码

  • 图片

  • CSS

  • 第三方依赖

上面几个就是主要的东西了。

输出

我们再来看看输出是什么, 这个就需要根据不同项目来看了.

  • 编译好的JS文件

  • CSS文件

  • 图片

这里最主要的就是JS文件了, 因为这个占了编译的大头, 我们聚焦一下

编译过程

至于Webpack的整体机制如loader/plugin啊这些就不在这里说了, 官网或者网上太多了, 只讲讲本人一路过来的思路和体验。

知道了输入和输出, 我们就可以有针对性的进行优化了。总体逃不过IO和运算的问题。

思路1:启用多线程或多进程,把不同的工作交给不同的线程来做, threadloader和Happypack喜欢用哪个就用哪个

思路2: 应该可以把编译的过程或结果进行缓存啊, 查查各种loader文档是否支持缓存, cache:true来一波

思路3:输出的vendor包我都好久没改过了, 这个其实就不用每次编译啊, 机制, DLLPlugin了解一下

思路4: 有些依赖都不用打包啊, 我直接用CDN的就好了啊, 对啊External就是干这个的

思路5: 好像HotReload模式下我改个文件编译很快的啊, 按理说每次新编译也可以啊,对了, webpack5的新cache策略很nice

以上方法本人都使用并验证过,最好用的还是Webpack5的新缓存策略,所以能升级就升级啦,跟紧时代脚步。

总结

总体来说, 还是需要根据不同项目的需求来做。本地开发构建和生产构建是二回事,本地开发构建直接使用webpack5的内置缓存策略就好了。

但是生产构建就不同了, 需要考虑懒加载,拆包,公用模块打包策略,三方依赖用external还是自己打vendor,CSS单独抽取还是跟随JS, 图片要不要做雪碧图,生产环境开没开HTTP2,这些都会决定你的生产环境打包策略。

Web高级 Webpack编译提速思路

标签:目的   nic   生产   不同的   方法   抽取   缓存   ad模式   原理   

原文地址:https://www.cnblogs.com/full-stack-engineer/p/14853418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!