编译期会出现错误提示有哪些_Webpack 5有哪些值得期待
Webpack 5已经到来
早在今年(2019年)的2月份,Webpack核心团队的Sean Larkin就做过一次关于webpack 5新特性的演讲,为大家讲述了webpack 5目前的开发进展,还有webpack 5会有哪些新特性。
现在,我们已经可以安装最新的webpack 5了,不过v5还不是正式版本。目前npm官网上的最新版本仍然是v4
为了体验v5版本,你需要使用下面的命令
yarn add webpack@next webpack-cli --devnpm install webpack@next webpack-cli --save-dev
webpack 5有哪些值得期待
本次major版本的修改主要参照下面的四个主要方向:
- 利用
持久缓存
来提高构建性能 - 优化算法和默认值来改善长期缓存
- 重构了内部代码,而不引入重大变更
- 为了未来可能的功能,引入一些重大的变更,以便可以让团队长时间停留在v5版本
持久缓存(Persistent Caching)
先简单地概述一下webpack的工作原理:webpack读取入口文件(entry
),然后递归查找所依赖的模块(module
),构建成一个“依赖图”,然后根据配置中的加载器(loader
)和打包策略来对模块进行编译。
但是如果中间有文件发生变化了,上面所述的整个递归遍历流程会重新再进行一次。
大致流程如下:
webpack 5利用持久缓存优化了整个流程,当检测到某个文件变化时,依照“依赖图”,只对修改过的文件进行编译,从而大幅提高了编译速度。
经过测试,16000模块的单页应用,速度可以提高98%
数据来自Sean Larkin的《The Road to Webpack 5》
命名IDs
在v5版本中,开发模式将默认开启全新的命名chunk id算法,编译后的chunk名称可读性大大加强。
模块ID(Module ID)由其相对于上下文的路径而确定,代码块ID(Chunk ID)由其内容来决定。
此外,在v5版本中还通过新的算法来帮助长期缓存
(long-term caching)。在生产环境中,可以使用下面的配置来启用新算法:
chunkIds: "deterministic”,
moduleIds: “deterministic"
新算法会以确定的方式为模块(module)和代码块(chunk)分配一个非常短(3或4个字符)的数字ID。所以,今后再生产环境中,如果你修改了vendor bundle中的一个依赖,那些并没有发生变化的模块ID也不会改变,所以仍然可以被浏览器缓存,提高资源加载的性能。
NodeJS的polyfill脚本被移除
最开始,webpack的目标是允许在浏览器中运行大多数的Node模块,但是现在模块格局已经发生了重大变化,现在有很多模块是专门为前端开发的。在v4及以前的版本中,对于大多数的Node模块将自动添加polyfill脚本(腻子脚本)。
然而,这些大量繁杂的脚本都会添加到最终编译的代码中(bundle),但其实通常情况下是没有必要的。在v5版本中将尝试停止自动地添加polyfill脚本,转而专注于前端兼容模块。
在迁移到v5版本时,最好尽可能使用前端兼容模块,如果一定要用到核心模块的话,请为其添加polyfill(webpack会通过错误提示来指导帮助开发者)。
废弃了一些特性
那些在v4中已经被抛弃但是仍然可以被使用的特性,将再v5中彻底被废弃。
所以在迁移到v5时,请留意那些在v4中抛出“弃用警告”(deprecation warnings)的提示。
除此之外,还有一些东西也被移除了,但是在v4中没有抛出弃用警告,例如IgnorePlugin和BannerPlugin,现在必须传递一个options对象。
引入了更多新东西
webpack 5 要求node的最低版本为 Node 8。不再是之前的Node 6。
另外,webpack 5还引入了webAssembly、Hashing、多线程、还有workers。
总结
今年的前端小伙伴们要学习的东西还真多,Flutter、Vue 3.0、现在又来了Webpack 5。真是“学无止境”~~
https://www.zhihu.com/video/1138159146842095616
参考文章:
- New Features in Webpack 5
- The Road to Webpack 5
- Changelog-v5
编译期会出现错误提示有哪些_Webpack 5有哪些值得期待相关推荐
- JAVA编译时出现的错误提示
1.错误:非法字符 看到这个错误提示,我们首先要考虑是否使用了中文字符 2.错误:找不到符号 看到这个错误,我们要考虑单词有没有拼写错误. 3.编译不报错,但是运行时出现错误 这种属于业务逻辑错误.环 ...
- tensorrt之tensorrtx编译:遇到的错误提示
一.tensorrtx 编译步骤: mkdir build cd build cmake .. make // /workspace/tensorrt_release/include# cp -r N ...
- 【新手】关于路径格式的问题(错误提示incomplete universal character name)
#include <stdio.h> int main() {system("E:\Pictures\csdn.jpg");system("pause&quo ...
- 编译mysql4.0时候出现错误提示checking LinuxThreads... Not found
编译mysql4.0时候出现错误提示checking "LinuxThreads"... "Not found" 2009-06-30 18:25 解压mysq ...
- 编译后错误提示为pls-00103:出现符号在需要下列之一时:begin case declare
create or replace trigger auth_secure before insert or update or delete --/对整表更新前触发 on g002 begin IF ...
- .iOS APP Project or Mac APP Project编译错误提示: My Mac 64-bit is not valid for Running the scheme...
1. iOS APP Project or Mac APP Project编译错误提示: "The run destination My Mac 64-bit is not valid f ...
- Android Studio 4.2Previw版本编译错误提示Disable offline mode and rerun the build
编译出现的问题 项目在Android Studio 4.2Previw版本编译错误提示Disable offline mode and rerun the build No cached versio ...
- Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决
在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决
- Java注解 编译_Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)
注解的处理除了可以在运行时通过反射机制处理外,还可以在编译期进行处理.在编译期处理注解时,会处理到不再产生新的源文件为止,之后再对所有源文件进行编译. Java5中提供了apt工具来进行编译期的注解处 ...
最新文章
- NeHe教程Qt实现——lesson14
- JSOI2010 联通数
- 【机器学习】信用卡欺诈检测|用启发式搜索优化XGBoost超参数
- 云服务器有什么好 能让云大佬们竞争如此激烈
- 深入解析jQuery中的延时对象的概念
- centos6.8安装docker,kong-dashboard并实现页面访问
- 惩罚女人的最有效方法!
- Spring Boot-使用JDBC连接并检索数据库(Mysql在Docker中)
- MySQL深度剖析之Buffer Pool专题(2021)
- 智能会议系统(5)---SipDemo
- 十六进制转换成字符串——CRC
- 项目启动会ppt_项目经理实战篇-项目启动会
- Windows API ——GetLogicalDriveStrings——获取逻辑驱动器
- 利用Caffe训练模型(solver、deploy、train_val)+python使用已训练模型
- ElasticSearch6.0.1 拼音搜索,并且高亮显示结果 —6.X版本
- java中POJO、PO、BO、VO、DTO和DAO的概念
- 数字贸易标准体系框架
- RecyclerView 实现横向滚动效果
- 盘点2014:10个词让你看懂今年的移动互联网
- 从高级语言实现ads 通信_4000通讯ADS通讯-高级语言-资源下载-读根文库