最新发布!webpack 4.0.0-alpha.0 特性
Posted 前端先锋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最新发布!webpack 4.0.0-alpha.0 特性相关的知识,希望对你有一定的参考价值。
重大更新
Node.js 4不再受到支持。源代码被升级到更高的ecmascript版本。
你现在可以使用(
mode
或--mode
) 在两种模式之间选择:生产模式或开发模式WIP:在开发模式中增加提示
生产模式能够通过各种手段来生成优化的捆绑包
开发模式使开发过程中能够使用注释和提示和eval devtool
生产模式不支持watching,开发模式被优化为快速增量重建
生产模式也使模块连接(范围提升)
你可以使用
optimization.*
标志详细配置此功能(构建你的自定义模式)process.env.NODE_ENV
被设置为生产或开发(只在构建代码中,而不是在配置中)有一个隐藏的
none
模式,禁用一切import()
总是返回一个名称空间对象。 CommonJS模块被封装到默认导出中如果你用
import()
导入CommonJs可能会破坏你的代码
你不再需要使用这些插件:
NoEmitOnErrorsPlugin
- >optimize.noEmitOnErrors
(在生产模式下默认打开)ModuleConcatenationPlugin
- >optimize.concatenateModules
(默认处于生产模式)webpack现在处理JSON不同
将JSON通过加载器转换为JS时,可能需要添加
type:"javascript / esm"
只使用JSON而没有加载器应该仍然可以工作
重要特性
webpack现在支持这些模块类型:
javascript / auto:(在webpack 3中默认的)启用了所有模块系统的Javascript模块:CommonJS,AMD,ESM
javascript / esm:EcmaScript模块,所有其他模块系统不可用
json:JSON数据,JSON数据传递不变,不被解析
webassembly / experimental:WebAssembly模块(目前是实验性的)
与
javascript / auto
相比,javascript / esm
处理更严格的ESM:导入的名称需要在导入的模块上存在
非ESM只能通过默认导入导入,其他所有(包括命名空间导入)都会发出错误
在
.mjs
模块中使用
javascript/esm
进口需要有一个扩展。 没有扩展尝试。
sideEffects:false
在package.json
中受支持使用JSONP数组而不是JSONP函数
->
异步支持WIP:还没有办法将运行时移动到另一个块
webpackInclude
和webpackExclude
被import()
的魔法注释支持。 它们允许在使用动态表达式时过滤文件。现在可以使用
module.rules[].resolve
来配置解析。 它与全局配置合并。Sone Plugin选项现在已经过验证
WIP:更好的输出,没有进程退出,堆栈跟踪,更多的插件
多重性能改进,特别是对于更快的增量重建
特性
通过CLI添加的插件预先优先于配置插件
模块类型自动选择为mjs,json和wasm扩展名。其他扩展需要通过
module.rules [].type
进行配置添加指向上下文选项的
loaderContext.rootContext
。装载器可以使用它来创建相对于应用程序根目录的东西。块加载错误现在包含更多信息和两个新的属性
type
和request
。不正确的
options.dependencies
配置现在会抛出错误webpacks AST 可以直接从加载器传递给webpack以避免额外的解析
当使用超过25个出口时,出口名称变短。
webpack现在按此顺序查找
.wasm
,.mjs
,.js
和.json
扩展名现在尺寸显示为kiB,而不是统计中的kB
上下文支持资源查询
在开发模式下,
output.pathinfo
默认处于开启状态内存缓存在生产中默认关闭
脚本标签不再是
text/JavaScript
和async
,因为这是默认值(保存几个字节)
修复的bug
生成的注释不再丢失
*/
webpack不再修改传递的选项对象
编译器“watch-run”钩子没有编译器作为第一个参数
将
chunkCallbackName
添加到模式以允许配置WebWorker模板
移除的特性
移除
module.loaders
移除
loaderContext.options
移除
Compilation.notCacheable flag
移除
NoErrorsPlugin
移除
Dependency.isEqualResource
移除
NewWatchingPlugin
中断的插件修改
新的插件系统
plugin
方法是向后兼容的插件现在应该使用
Compiler.hooks.xxx.tap(<plugin name>, fn)
增强解决方案的新主要版本
块的模板现在可以生成多个资产
chunk.chunks/parents/blocks
不再是数组。一个集合在内部使用,并有方法来访问它。Parser.scope.renames
和Parser.scope.definitions
不再是对象/数组,而是映射/集合。解析器使用
StackedSetMap
(类似于LevelDB的数据结构)而不是数组在应用插件时不再设置
Compiler.options
和谐相依性因重构而改变
Dependency.getReference()
现在可能返回一个weak
属性。Dependency.weak
现在被Dependency
基类使用,并在getReference()
的基本实现中返回为所有模块更改构造函数参数
将选项合并到
ContextModule
和resolveDependencies
的选项对象中更改和重命名
import()
的依赖关系将Compiler.resolvers移入可通过插件访问的
Compiler.resolverFactory
Dependency.isEqualResource
已被替换为Dependency.getResourceIdentifier
不兼容的插件
html-webpack-plugin: 插件系统升级 (jantimon/html-webpack-plugin#816)请提交意见
不兼容的加载器
file-loader -> Workaround A
vue-loader -> Workaround A
ejs-loader -> Workaround A
eslint-loader -> Workaround A请提交意见
缺失的特性
请提交意见
解决方法:
Workround A
对于不能使用this.options
迁移的加载器:
new LoaderOptionsPlugin({
options: {
context: process.cwd() // or the same value as `context`
}
})
不要指望这个alpha版本是超稳定的...
如果您在更改日志中发现其他更改,请发表评论
往期精选文章 |
---|
小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。
以上是关于最新发布!webpack 4.0.0-alpha.0 特性的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义操作中打开和隐藏 ng-bootstrap datepicker?
Webpack 开发服务器配置 - contentBase 在最新版本中不起作用
bootstrap-flex、bootstrap-grid 和 bootstrap-reboot 的区别