環境(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 以自定義代碼生成