Webpack 5.106.1 发布了。这次更新看着版本号只跳了0.0.1,实际修的是两个能让老项目原地爆炸的回归问题——就是那种"代码跑得好好的,一升级就报错"的经典剧情。
第一个坑:生成的代码引用了未声明的 __WEBPACK_DEFAULT_EXPORT__ 绑定,直接抛出 ReferenceError。第二个坑更隐蔽:在 ES2015 之前的环境里用了 Reflect.defineProperty,但这个方法在老浏览器里根本不存在。修复方案倒是很朴素——老老实实指向真正的赋值目标,改用 Object.defineProperty 和 Object.getOwnPropertyDescriptor。有时候做兼容就像给老房子换插座,新国标再好看,插不进去都是白搭。
CSS 模块这边也有调整。!important 不会再被重命名为 local identifier 了,另外 local ident hashing 改用编译器上下文而非模块上下文。后者解决的是一个很实际的场景:不同目录下有同名文件时,之前可能撞哈希,现在不会了。想象一下两个叫 index.module.css 的文件躺在完全不同的路径里,打包出来却共享同一个类名——这种 bug 查起来能掉头发。
更新详情见官方 Release 页面。如果你还在维护需要兼容 IE 的项目,建议测完再升;毕竟 Webpack 团队自己都说这是 regression fix,说明之前确实有人中招了。
热门跟贴