翻译:疯狂的技术宅原文作者:sokra原文链接:https://github.com/webpack/webpack/releases/tag/v4.0.0

optimization.*标志对此进行详细配置(构建您的自定义模式)process.env.NODE_ENV被设置为生产或开发(仅在构建的代码中,而不是在配置中)none模式可以禁用所有的功能mode 或 --mode):生产模式或开发模式import()导入 CommonJs 可能会破坏你的代码,import()总是返回一个命名空间对象。 CommonJS 模块被封装到默认导出中NoEmitOnErrorsPlugin - > optimization.noEmitOnErrors(在生产模式下默认打开)ModuleConcatenationPlugin - > optimization.concatenateModules(在生产模式下默认打开)NamedModulesPlugin - > optimization.namedModules(开发模式默认打开)CommonsChunkPlugin移除 - > optimization.splitChunks,optimization.runtimeChunktype: "javascript/auto"javascript/auto相比,javascript/esm更严格地处理ESM:.mjs模块默认为javascript/esmWebAssembly模块import()处理死分支时发生崩溃sideEffects还支持glob表达式和glob表达式的数组side.Effects:false现在在package.json中受支持optimization.splitChunks选项,详情:https://gist.github.com/sokra/1522d586b8e5c0f5072d7565c2bee693webpackInclude和webpackExclude受到import()的魔法注释的支持。 它们允许在使用动态表达式时过滤文件。System.import()现在会发出警告Rule.parser.system:true禁用警告Rule.parser.system:false禁用System.importmodule.rules[].resolve来配置解析。它与全局配置合并。optimization.minimize已添加到最小化开/关optimization.minimizer已被添加到配置最小化器和选项webpack-cli才能使用CLI--progress)现在显示插件名称module.rules[]type进行配置options.dependencies配置现在会抛出错误sideEffects可以通过module.rules覆盖output.hashFunction现在可以是自定义散列函数的构造函数include test 和exclude的支持for of而不是forEachmap和set而不是对象includes而不是indexOftext/javascript 和 async,因为这是默认值(保存几个字节)__webpack_require__,参数被忽略.wasm,.mjs,.js和.json扩展名output.pathinfo现在默认处于开发模式entry默认为./srcoutput.path默认为./dist<{parents}> >{children}< 和 ={siblings}=import()中引用入口点名称现在会发出错误而不是警告done是一个异步钩子output.chunkCallbackName添加到模式以允许配置WebWorker模板module.id/loaded可以正确地从Module Concatentation(范围提升)OccurenceOrderPlugin现在按照正确的顺序排序模块(而不是颠倒过来)Watching.invalidate时,将从观察器读取文件时间戳-! 在post加载器错误的行为this在ESM中未定义var,const或letjavascript/dynamic或javascript/module时,解析器现在使用正确的源类型(模块/脚本)解析源代码。buildMeta为null的缺失模块不再崩溃original-fs模块pluginsbuildMeta.exportsType:"default"neo-async而不是asyncmodule.loadersloaderContext.optionsCompilation.notCacheable flagNoErrorsPluginDependency.isEqualResourceNewWatchingPluginCommonsChunkPluginCompiler.hooks.xxx.tap(<plugin name>,fn)Chunk.chunks/parents/blocks不再是Arrays。在内部使用Set,并有方法来访问它。Parser.scope.renames和Parser.scope.definitions不再是Objects/Arrays,而是Map/Sets。StackedSetMap(类似于LevelDB的数据结构)而不是ArraysCompiler.optionsDependency.getReference()现在可能返回一个弱属性。 Dependency.weak现在由Dependency基类使用,并返回到getReference()的基本实现中ContextModule和resolveDependencies的选项对象中import()的依赖关系Compiler.resolvers移入可通过插件访问的Compiler.resolverFactoryDependency.isEqualResource已被替换为Dependency.getResourceIdentifierTemplate上的方法现在是静态的outputOptions和requestShortener已移至此类Module.meta已被Module.buildMeta替代Module.buildInfo和Module.factoryMetaModule的某些属性已被移入新对象中loaderContext.rootContext。装载器可以使用它来创建相对于应用程序根目录的东西。this.hot标志添加到加载器上下文中buildMeta.harmony已被替换为buildMeta.exportsType:“namespacemap/foreach Chunks/Modules/Parents方法现在已被弃用/删除createGenerator和generator器钩子以自定义代码生成往期精选文章 |
|---|
使用虚拟dom和JavaScript构建完全响应式的UI框架 |
扩展 Vue 组件 |
使用Three.js制作酷炫无比的无穷隧道特效 |
一个治愈JavaScript疲劳的学习计划 |
全栈工程师技能大全 |
WEB前端性能优化常见方法 |
一小时内搭建一个全栈Web应用框架 |
干货:CSS 专业技巧 |
四步实现React页面过渡动画效果 |
让你分分钟理解 JavaScript 闭包 |
小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。