resolve.root
, resolve.fallback,resolve.modulesDirectories,
,这三个选项如今所有合并到resolve.modules一个选项中。关于resolving,查看更多
node
resolve.extensions
这个配置项再也不强制要求传入一个空字符串,这个行为被移动到了resolve.enforceExtension配置项webpack
更多不经常使用的配置项再也不一一列出来,详情请查看 resolving,查看更多。
git
功能更强大的rules系统取代了老版本中的loader,可是老的moduler.loader写法依然是被支持的,新的命名规则更加通俗易懂,很是建议使用新的module.rules。es6
同webpack1.x相似,链式loaders继续支持链式写法,匹配到的文件能够从一个loader传递到下一个loader,在新的rule.use配置项中,能够经过use项来指定须要用到的loader列表,在webpack1.x中须要用!来分割不一样的loader,新版本只在module.loader中支持这种写法。github
如今在配置loader的时候不容许省略-loader扩展名,例如:style-loader不能够简写为styleweb
若是你想继续使用省略-loader的写法,你能够在resolveLoader.moduleExtensions配置省略的-loader,不过不建议这么作npm
在没有为json文件配置loader的时候,webpack会默认自动使用json-loader来加载json文件json
在 webpack 1 中,loader 默认配置下 resolve 相对于被匹配的文件。而在 webpack 2 中默认配置的 resolve 相对于 context
配置项。babel
这解决了一些问题,好比使用 npm link
或引用 context
以外的模块时致使重复载入。异步
移除了module.preloaders和module.postLoaders
UglifyJsPlugin
的 sourceMap
配置项如今默认为 false
而不是 true
。
这意味着若是你在压缩代码时启用了 source map,或者想要让 uglifyjs 的警告可以对应到正确的代码行,你须要将 UglifyJsPlugin
的 sourceMap
设为 true
。
UglifyJsPlugin warnings
UglifyJsPlugin
的 compress.warnings
配置项如今默认为 false
而不是 true
。
这意味着若是你想要看到 uglifyjs 的警告信息,你须要将 compress.warnings
设为 true
。
UglifyJsPlugin minimize loaders
UglifyJsPlugin
再也不压缩 loaders。在将来很长一段时间里,须要经过设置 minimize:true
来压缩 loaders。参考 loader 文档里的相关配置项。
loaders 的压缩模式将在 webpack 3 或更高的版本中被取消。
为了兼容旧的 loaders,loaders 能够经过插件来切换到压缩模式:
DedupePlugin 如今是被默认加载的
从你的配置文件中移除webpack.optimize.DedupePlugin
BannerPlugin
大变化BannerPlugin再也不接收两个参数,取而代之的是一个对象
OccurrenceOrderPlugin
再也不须要手动加入,如今是默认的
ExtractTextWebpackPlugin
大变化ExtractTextPlugin 1.0.0 不能在 webpack v2 下工做。 你须要安装ExtractTextPlugin v2。
npm install --save-dev extract-text-webpack-plugin@beta
新的ExtractTextPlugin插件的配置也发生了大变化
require.ensure和 AMD
require 是
异步的如今这些函数老是异步的,而不是当 chunk 已经加载过的时候同步调用它们的 callback。
注意 require.ensure
如今依赖于原生的 Promise
。若是在不支持 Promise 的环境里使用 require.ensure
,你须要添加 polyfill。
在webpack.config.js
中将再也不容许使用自定义属性来配置loder,例如:在ts
配置项中的自定义属性将没法在被在webpack2中正确使用:
严格来讲,有两种办法,均可以用来配置 webpack 的 loader。典型的 options
被称为 query
,是一个能够被添加到 loader 名以后的字符串。它比较像一个 query string,可是实际上有更强大的能力:
不过它也能够分开来,写成一个单独的对象,紧跟在 loader 属性后面:
LoaderOptionsPlugin
context有的 loader 须要从配置中读取一些 context 信息。在将来很长一段时间里,这将须要经过 loader options 传入。详见 loader 文档的相关选项。
为了保持对旧 loaders 的兼容,这些信息能够经过插件传进来:
debug
在 webpack 1 中 debug
配置项切换 loaders 到 debug 模式。在未来很长一段时间里,这将须要经过 loader 配置项传递。详见 loader 文档的相关选项。
loaders 的 debug 模式将在 webpack 3 或后续版本中取消。
为了保持对旧 loaders 的兼容,loader 能够经过插件来切换到 debug 模式。
在 webpack v1 中,你能使用 require.ensure
做为方法来懒加载 chunks 到你的应用中:
ES2015 模块加载规范定义了 import()
方法来运行时动态地加载 ES2015 模块。
webpack 将 import()
做为分割点并将被请求的模块放到一个单独的 chunk 中。
import()
接收模块名做为参数,并返回一个 Promise。
好处是:若是加载 chunk 失败,咱们能够进行处理,由于如今它基于 Promise
。
警告:require.ensure
容许用可选的第三个参数为 chunk 简单命名,可是 import
API 还未提供这个功能。若是你想要保留这个功能,你能够继续使用 require.ensure
。
能够传递部分表达式给 import()
。这与 CommonJS 对表达式的处理方式一致(webpack 为全部可能匹配的文件建立 context)。
import()
为每个可能的模块建立独立的 chunk。
你能够自由混合使用三种模块类型(甚至在同一个文件中)。在这个状况中 webpack 的行为和 babel 以及 node-eps 一致:
可是请注意,不能让babe解析这些模块,从而让 webpack 可使用它们。你能够经过设置以下配置到 .babelrc
或 babel-loader 来实现这一点。
模板字符串
webpack 如今支持表达式中的模板字符串了。如今你能够这样使用:
webpack 如今支持在配置文件中返回 Promise
了。这让你能在配置文件中作异步处理。
ebpack 如今支持对 loader 进行更多方式的匹配。