純手打翻譯,也有小部分比較生硬的翻譯,原諒那部分我也沒太懂😂javascript
環境java
不在支持Nodejs 4。源代碼已經更新到一個較高的ecmascript版本。webpack
使用git
mode
或者--mode
): production 或者 development
optimization.*
的方式去設定更詳細的配置(搭建你的自定義模式)process.env.NODE_ENV
變量已經在production和development兩種模式中被設置了(只在構建的代碼裏面,不在配置裏)none
模式, 這種模式禁用了全部東西語法github
import()
永遠都會返回一個帶命名空間的對象。CommonJS模塊會被包成export的default裏面。
import()
的方式去導入你的CommonJS代碼。配置web
NoEmitOnErrorsPlugin
->optimization.noEmitOnErrors
(production模式默認開啓)ModuleConcatenationPlugin
->optimization.concatenateModules
(production模式默認開啓)NameModulesPlugin
-> optimization.nameModules
(development模式默認開啓)CommonsChunkPlugin
已經被移除 -> optimization.splitChunks
,optimization.runtimeChunk
JSON正則表達式
type:"javascript/auto"
優化json
uglifyjs-webpack-plugin
到v1
模塊數組
webpack如今支持下面的模塊類型:緩存
javascript/auto:(webpack 3中的默認類型) 全部模塊裏面的javascript模塊
系統支持: CommonJS, AMD, ESM
javascript/esm: EcmaScript模塊,全部的其餘系統模塊類型將獲取不到
javascript/dynamic: 只有CommonJS和EcmaScript的模塊將獲取不到
json: JSON數據, 能夠經過require或者import獲取
webassembly/experimental: WebAssembly 模塊(當前仍是實驗版本)
javascript/esm
處理ESM的時候迴避javascript/auto
更嚴格
導入進來的名字須要須要在導入的模塊中存在
動態模塊(非esm,好比CommonJS)只能經過import的default裏面得到
其餘全部的方式(包括命名空間的導入)都會報錯。
在.mjs
的模塊裏面將默認使用javascript/esm
模式
WebAssembly模塊
import()
的方式去導入WASM模塊優化
sideEffects: false
如今已經支持在package.json裏面使用
sideEffect
容許使用glob表達式和glob表達式數組JSONP數組已經代替JSONP函數使用 -> 異步腳本標記支持, 順序再也不重要。
添加新的選項optimization.splitChunks
webpack自身移除了廢棄的分支代碼
import()
將會中止移除操做。語法
import()
支持黑科技般的註釋: webpackInclude
和webpackExclude
。
他們容許你在使用動態表達式導入的時候過濾掉一些文件。
使用System.import()
將會提示警告
Rule.parser.system:true
關閉掉這些警告Rule.parser.sustem:false
來禁用System.import
配置
module.rules[].resolve
來配置解析方式。這將會跟全局的配置合併到一塊兒。optimization.minimize
已經被添加到配置裏面,經過其開關最小化/壓縮功能。
optimization.minimizer
已經被添加到配置裏面,經過其去設置壓縮處理程序和選項。使用
性能
Stats
Stats如今會在有串聯的模塊中打印顯示層級嵌套
module.rules[].type
中配置。options.dependencies
配置會拋出錯誤。sideEffects
能夠經過module.rules覆蓋output.hashFunction
如今能夠是一個自定義的hash處理函數
output.globalObject
config選項,以容許在運行時exitCode中選擇全局對象引用type
和request
include
test
和exclude
的支持for of
代替forEach
Map
和Set
代替Objectsincludes
代替indexOf
text/javascript
和async
,由於他們是默認值(節省一些字節)__webpack_require__
和參數已經刪除.wasm
,.mjs
,.js
,.json
擴展的順序尋找文件output.pathinfo
如今是development模式默認開啓entry
默認指向./src
output.path
默認指向./dist
import()
裏面應用一個入口節點的名字會從警告變成錯誤提示done
如今是一個異步鉤子output.chunkCallbackName
以容許配置webworker模板mdoule.id/loaded
能夠正確的跳出模塊連接(做用域提高)Watching.invalidate
時,文件的時間戳是從監聽器中獲取-!
行爲MultiCompiler
中添加run
和watchRun
鉤子this
會是undefined
var
,let
,const
來進行正確的變量聲明javascript/dynamic
或javascript/module
時,用正確的源代碼(模塊/腳本)來解析源代碼。buildMeta
of Null丟失模塊的時候不會打斷original-fs
模塊plugins
以外添加到編譯器中tap
調用來替換plugin
調用(新插件系統)buildMeta.exprotsType:default
到json模塊中BasicEvaluatedExpression
和具備多個類型的能力neo-async
代替async
移除 module.loaders
移除 loaderContext.options
移除 Compliation.notCacheable
標記
移除 NoErrorsPlugin
移除 Dependency.isEqualResource
移除 NewWatchingPlugin
移除 CommonsChunkPlugin
plugin
方法向後兼容Compiler.hooks.xxx.tap(<plugin name>, fn)
Chunk.chunks/parents/blocks
如今不在是數組。內部使用一個Set,而且有方法能夠訪問到它。Parser.scope.renames
和Parser.scope.definitions
不在是Object/Array,而是 Map/Set.StackedSetMap
(LevelDB形式的數組結構)代替數組Compiler.options
Dependency.getReference()
如今將返回一個 weak
屬性. Dependency.weak
如今被 Dependency
的基類使用 而且在 getReference()
內部基礎impl中返回module
改變ContextModule
和resolveDependencies
中的選項import()
裏面的依賴Compiler.resolvers
到Compiler.resolverFactory
以使插件能夠訪問到Dependency.isEqualResource
被Dependency.getResourceIdentifier
替換Template
裏面的方法如今是靜態方法outputOptions
和requestShortener
遷移到這個類裏面
Module.meta
被Module.buildMeta
替代Module.buildInfo
和Module.factoryMeta
Module
的一些屬性被移動到一個新的對象context
選項的loaderContext.rootContext
。 loaders可能須要用它去建立相對於程序根的內容this.hot
標記到loader上下文,當HMR開啓的時候buildMeta.harmony
被buildMeta.exportType: "namespace"
替代map/foreach
Chunks/Modules/Parents
方法已經被移除createGenerator
和generator
鉤子以自定義代碼生成