环境(Environment)javascript
使用(Usage)java
您如今必须在两种模式之间选择(使用mode
或--mode
):production 或 developmentwebpack
optimization.*
来作详细配置(构建您的自定义模式)process.env.NODE_ENV
被自动设置为 production 或 development(仅在构建的代码中,而不在配置中)语法(Syntax)git
import()
始终返回命名空间对象。 CommonJS模块包含在默认导出中github
import()
导入CommonJs,这可能会破坏您的代码配置(Configuration)web
您再也不须要使用这些插件json
NoEmitOnErrorsPlugin
-> optimization.noEmitOnErrors
(默认状况下在生产模式下打开)ModuleConcatenationPlugin
-> optimization.concatenateModules
(默认状况下在生产模式下启用)NamedModulesPlugin
- > optimization.namedModules
(默认状况下在开发模式下启用)CommonsChunkPlugin
被移除 -> optimization.splitChunks
,optimization.runtimeChunk
JSON数组
webpack如今能够本地处理JSON缓存
type: "javascript / auto"
容许经过ESM语法导入JSON数据结构
优化(Optimization)
升级 uglifyjs-webpack-plugin 到 v1
模块(Modules)
webpack 如今支持一下几种模块类型:
与javascript/auto
相比,javascript/esm
更严格地处理ESM:
.mjs
模块中默认为javascript/esm
WebAssembly 模块
经过ESM导入验证WebAssembly模块的导出
只能在异步块中使用。 它们在初始块中不起做用(对Web性能不利)
import()
使用WASM导入模块优化(Optimization)
sideEffects: false
在package.json 中被支持
sideEffects
在package.json中还支持glob表达式和glob表达式数组optimization.splitChunks
选项, 详情: https://gist.github.com/sokra... 如今经过webpack 自己删除了无用分支
import()
时崩溃语法(Syntax)
import()
的magic comment支持webpackInclude
和webpackExclude
。 它们容许在使用动态表达式时过滤文件。使用System.import()
如今会发出警告
Rule.parser.system: true
来禁用警告Rule.parser.system: false
来禁用System.import
配置(Configuration)
module.rules[].resolve
配置解析。它能够与全局配置合并optimization.minimize
中已添加on/off 开关以切换最小化optimization.minimize
中已添加minimizers 和options 配置使用(Usage)
webpack-cli
才能使用CLIProgressPlugin(--progress
)如今显示插件名称
性能(Performance)
统计
配置(Configuration)
module.rules[].type
来配置options.dependencies
配置将抛出错误sideEffects
能够经过module.rules覆盖output.hashFunction
能够是自定义散列函数的构造函数
output.globalObject
配置选项以容许在运行时exitCode 中选择全局对象引用运行时(Runtime)
Devtool
include
test
和exclude
支持性能(Performance)
for of
而不是forEach
Map
和 Set
来代替Objectsincludes
来代替indexOf
优化(Optimization)
text/javascript
和async
,由于这是默认值(节省几个字节)__webpack_require__
且省略了参数默认(Defaults)
.wasm
,.mjs
,.js
和.json
扩展名output.pathinfo
如今默认在development 模式下开启entry
默认指向路径 ./src
mode
选项时默认使用production
模式使用(Usage)
统计(stats)
<{parents}>
>{children}<
和 ={siblings}=
buildAt
时间到统计中语法(Syntax)
import()
中引用入口点(entry point)名称如今会发出错误而不是警告插件(Plugins)
done
如今是异步钩子*/
中中断output.chunkCallbackName
添加到schema 以容许配置Web Worker 模板module.id/loaded
正确地避免了模块连接(Module Concatentation)(Scope Hoisting)Watching.invalidate
时,会从观察者读取文件的时间戳-!
在post loaders中run
和watchRun
hooks for MultiCompiler
this
显示undefinedvar
,const
或let
javascript/dynamic
或javascript/module
时,Parser如今使用正确的资源类型(module/script)解析源代码。buildMeta
为null的缺失模块时崩溃original-fs
模块plugins
以外添加到Compiler 中tap
调用替换了plugin
调用(新的插件系统)buildMeta.exportsType: "default"
Buffer.from
代替 new Buffer
forEach
,使用for of
代替neo-async
代替async
全新的插件系统
plugin
方法向后兼容Chunk.chunks/parents/blocks
再也不是Arrays。 内部使用Set,有方法能够访问它Parser.scope.renames
和 Parser.scope.definitions
不在使用 Objects/Arrays, 而是 Map/SetsStackedSetMap
(相似LevelDB的数据结构) 代替 ArraysCompiler.options
Dependency.getReference()
如今可能返回一个weak
属性。Dependency.weak
如今由Dependency
基类使用,并在getReference()
的基本impl中返回Module
的构造函数参数都已更改ContextModule
和resolveDependencies
的options对象中import()
的依赖项Compiler.resolvers
移动到可经过插件访问的Compiler.resolverFactory
中Dependency.isEqualResource
已替换为Dependency.getResourceIdentifier
Template
中的方法是静态的添加了一个新的RuntimeTemplate 类,并将outputOptions
和requestShortener
移动到此类
RuntimeTemplate
Module.meta
以及被替代为 Module.buildMeta
Module.buildInfo
和Module.factoryMeta
Module
的某些属性已移至新对象中context
选项的loaderContext.rootContext
。 Loaders 能够使用它来建立相对于应用程序根目录的东西this.hot
标志添加到loader 上下文buildMeta.harmony
已替换为buildMeta.exportsType: "namespace"
chunk 图已更改:
map/foreach
Chunks/Modules/Parents
方法已经被 废弃/移除createGenerator
和generator
hooks 以自定义代码生成