翻译:疯狂的技术宅原文作者: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.runtimeChunk
type: "javascript/auto"
javascript/auto
相比,javascript/esm
更严格地处理ESM:.mjs
模块默认为javascript/esm
WebAssembly
模块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.import
module.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
而不是forEach
map
和set
而不是对象includes
而不是indexOf
text/javascript
和 async
,因为这是默认值(保存几个字节)__webpack_require__
,参数被忽略.wasm
,.mjs
,.js
和.json
扩展名output.pathinfo
现在默认处于开发模式entry
默认为./src
output.path
默认为./dist
<{parents}>
>{children}<
和 ={siblings}=
import()
中引用入口点名称现在会发出错误而不是警告done
是一个异步钩子output.chunkCallbackName
添加到模式以允许配置WebWorker模板module.id/loaded
可以正确地从Module Concatentation(范围提升)OccurenceOrderPlugin
现在按照正确的顺序排序模块(而不是颠倒过来)Watching.invalidate
时,将从观察器读取文件时间戳-!
在post加载器错误的行为this
在ESM中未定义var
,const
或let
javascript/dynamic
或javascript/module
时,解析器现在使用正确的源类型(模块/脚本)解析源代码。buildMeta
为null的缺失模块不再崩溃original-fs
模块plugins
buildMeta.exportsType:"default"
neo-async
而不是async
module.loaders
loaderContext.options
Compilation.notCacheable flag
NoErrorsPlugin
Dependency.isEqualResource
NewWatchingPlugin
CommonsChunkPlugin
Compiler.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.options
Dependency.getReference()
现在可能返回一个弱属性。 Dependency.weak
现在由Dependency
基类使用,并返回到getReference()
的基本实现中ContextModule
和resolveDependencies
的选项对象中import()
的依赖关系Compiler.resolvers
移入可通过插件访问的Compiler.resolverFactory
Dependency.isEqualResource
已被替换为Dependency.getResourceIdentifier
Template
上的方法现在是静态的outputOptions
和requestShortener
已移至此类Module.meta
已被Module.buildMeta
替代Module.buildInfo
和Module.factoryMeta
Module
的某些属性已被移入新对象中loaderContext.rootContext
。装载器可以使用它来创建相对于应用程序根目录的东西。this.hot
标志添加到加载器上下文中buildMeta.harmony
已被替换为buildMeta.exportsType:“namespace
map/foreach Chunks/Modules/Parents
方法现在已被弃用/删除createGenerator
和generator
器钩子以自定义代码生成往期精选文章 |
---|
使用虚拟dom和JavaScript构建完全响应式的UI框架 |
扩展 Vue 组件 |
使用Three.js制作酷炫无比的无穷隧道特效 |
一个治愈JavaScript疲劳的学习计划 |
全栈工程师技能大全 |
WEB前端性能优化常见方法 |
一小时内搭建一个全栈Web应用框架 |
干货:CSS 专业技巧 |
四步实现React页面过渡动画效果 |
让你分分钟理解 JavaScript 闭包 |
小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。