纯手打翻译,也有小部分比较生硬的翻译,原谅那部分我也没太懂😂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
钩子以自定义代码生成