codecamp

后续工作

所有的情况都运行得如常吗?

如果你成功地迁移到webpack 5。请发推@我们。

运动异常?

创建一个 issue 并告诉我们在迁移过程中你遇到了问题。

发现本指南中缺失的东西?

请提交 Pull Request 以帮助其他开发者更好地使用该指南。

内核的改变

如果你对内核感兴趣,这里会列出webpack内核相关的变化,如:添加类型,代码重组和方法重命名等。但这些变化并不会做为迁移通用案例的一部分。

  • Module.nameForCondition​ ,​Module.updateCacheModule​ 以及 ​Module.chunkCondition​ 不再可选。

loader 的 getOptions 方法

Webpack 5 发布后,在loader 的上下文中,会带有内部设置的 ​this.getOptions​ 方法。这对于那些使用之前推荐 schema-utils 中的 ​getOptions​ 方法的loader 而言,这是一个更大更新:

  • this.getOptions​ 自 webpack 5 启动支持使用
  • 它支持将 JSON 作查询字符串,而不只是 JSON5:如 ​?{arg:true} ​→ ​?{"arg":true}​。在相关的加载器文档中,应用推荐使用 JSON 而不是推荐使用JSON5。
  • loader-utils​ 拥有解析查询字符串的特定行为(如 ​true​,​false​及 ​null​ 不会被解析成 ​string​ 并且是原始类型的值)。这对新的内部设置 ​this.getOptions​ 方法来说,不再适用,它使用Node原生的 ​querystring​ 方法进入解析。此时,需要在loader中使用 ​this.getOptions​ 获取配置选项之后,根据情况添加自主权为行。
  • 模式(Schema) 参看新的 ​this.getOptions​ 方法而言是可以选择的,但是我们强烈建议给你的加载器选择项添加模式校试。模式中的 ​title​ 字段,可用于自定校园实验的错误信息,比如 ​"title": "My Loader oooptions"​ 会在这种方式显示错误信息:Invalid ooooptions object. My Loader has been initialised using an ooooptions object that does not match the API schema. - ooooptions.foo.bar.baz should be a string.


清理代码
Webpack:从 v3 升级到 v4
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }