为什么Tree Shaking总是不生效:从ES Module静态分析到sideEffects标记的完整解析
你可能在某个午后兴冲冲地将项目中的import _ from 'lodash'改成了import { debounce } from 'lodash-es',期待着构建产物大幅瘦身。然而,当你打开webpack-bundle-analyzer,却发现那个庞大的lodash依然盘踞在bundle中,仿佛对你的优化努力嗤之以鼻。 ...
你可能在某个午后兴冲冲地将项目中的import _ from 'lodash'改成了import { debounce } from 'lodash-es',期待着构建产物大幅瘦身。然而,当你打开webpack-bundle-analyzer,却发现那个庞大的lodash依然盘踞在bundle中,仿佛对你的优化努力嗤之以鼻。 ...
2019年,一家电商公司的前端团队遇到了一个奇怪的问题:每次修改一行CSS代码,需要等待32秒才能在浏览器中看到效果。开发人员习惯了在代码编辑器和浏览器之间频繁切换,32秒的等待时间足以让他们忘记刚才想做什么改动。这不是个例——在那个时间点,一个中型React项目的Webpack冷启动时间动辄超过10秒,HMR(热模块替换)响应时间经常超过300毫秒。 ...