AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

Webpack 4.0 发布,带来配置简化、WebAssembly 支持和性能提升

  • 2018-03-19
  • 本文字数:1465 字

    阅读完需:约 5 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

2 月 25 日,目前最流行的 JavaScript 模块打包器—— Webpack 发布了其 4.0 版本。该版本包括了一个完全重新的插件系统,将 WebAssembly 支持提升到头等模块类型,简化了配置选项等特性。此次更新同时带来了巨大的性能提升,有报告称可以降低 60% 到 98% 的构建时间。

4.0 版本中包含的一个重要改进是简化了依赖的配置文件。竞争对手模块打包器 parcel.js 宣传的其中一个主要特性就是不需要配置。此次版本发布后,Webpack 引入了一个基于模式的最小化配置,默认情况下可以不使用任何配置文件。Prosper Otemuyiwa 在 Auth0 博客上发表了一篇文章来阐述其这项特性的意义:

在此之前为了能够让 Webpack 打包应用,必须在 webpack.config.js 文件中定义一个入口。然而在 Webpack 4 中,没有必要再去定义入口,它会默认使用./src/index.js 文件。

此外,也没有必要再定义生成的文件,Webpack 会将打包后文件生成到 /.dist/main.js。

这项看似华而不实的功能,对于小项目而言非常有意义,无需配置文件,只需 webpack!

此次发布同时包含了一个完全重写的插件系统,主要是处于性能的原因。Webpack 的核心开发人员 Tobias Koppers 曾在一篇介绍新系统的文章中解释过动机:

插件系统是 Webpack 的核心组件,这意味着插件钩子的调用频率非常高,许多钩子函数都是调用热点。

但是当前版本的插件系统使用非常通用的实现方式:使用 arguments 来表示任何数量的参数,然后循环获取以兼容各种参数数量的插件。对于每个钩子函数均如此,这使得调用插件方式有多种形态,难以优化。

新系统带来了更加明晰切便于优化的 API,以提高性能、便于调优,同时能够更加方便的和强类型系统(如 Typescript 和 Flow)进行整合。

4.0 版本在发布前持续了公测了 1 个月,以便于让插件开发者能够更新插件,但不是所有插件都已经更新。开发者可以参照插件移植指南对插件和加载器进行更新。另外,如果开发者使用了流行的 HTMLWebpackPlugin 插件,应该参照发布博客获取打过补丁的版本。由于该插件的核心维护者已经离开,Webpack 团队临时提供了一个兼容版本。

本次发布带来了另外一个重大提升是支持了多个头等模块类型,包括对 WebAssembly 的实验性支持。Webpack 对 WebAssembly 的支持从 2017 年 7 月就已经开始,当时 Webpack 团队获得了 Mozilla 开源支持计划(Mozilla Open Source Support ,MOSS)的资助。在关于此次自助的公告中,Webpack 团队的 Sean Larkin 制定了目标:

更进一步,我们希望用户可以在工程中添加任何 Rust、C++、C 文件,然后像使用 JavaScript 模块那样使用它们。

此次发布之后,这个目标已经开始实现。现在我们可以通过 npm 安装 Rust 加载器 C++ 加载器,这已经支持了目标语言中的⅔。

归功于大幅度的性能提升,那些对新特性不感兴趣的开发者可能也会希望升级到 Webpack 4.0。在一个非正式的twitter 调查中,twitter 用户Evan Scott报告了构建时间有74% 的提升,从36801ms 降低到了9632ms;而twitter 用户Arkaitz Garro报告了有65% 的提升,构建时间从42730ms 降低到了15179ms。

Webpack 4.0 的完整更新日志可以在发布说明上查看。需要注意的是此次发布将Webpack CLI 拆分到了独立的webpack-cli 包中,因此如果在构建系统之外使用,需要额外安装新的包。希望尝试Webpack 4.0 的开发者可以通过npm i webpack webpack-cli --save-dev 命令安装。

查看英文原文 Webpack 4.0 Release Brings Simplified Configuration, WebAssembly Support, and Big Performance Boost

2018-03-19 19:002757

评论

发布
暂无评论
发现更多内容

68种架构可扩展性设计:从类到服务治理(成就架构师必备,收藏金典)

肖哥弹架构

架构设计 架构要素

90 分钟带你玩转知识库应用

Baidu AICLOUD

数据库 向量数据库

一图读懂 | ONES V6 大版本,助力企业更快更好发布产品

万事ONES

企业服务 研发管理工具ONES Jira迁移

10分钟构建Web 应用防火墙-WAF

coxi_vv

Web waf Web防火墙 1Panel

解决海外直播卡顿的方法

Ogcloud

海外直播专线 海外直播 海外直播网络

面向AI之海,行业智能化需要一座“运力灯塔”

脑极体

AI 网络

ONES 王颖奇:关于 ONES V6 发布的解读

万事ONES

研发管理工具 企业服务 AI工具

势不可挡的All in AI,用友BIP AI+行业创新实践

用友BIP

Redis缓存异常及解决方案

天翼云开发者社区

redis 缓存

PSD文件用什么打开?免费白板软件在线查看设计文件!

职场工具箱

效率工具 职场 ps 在线白板 办公软件

10分钟构建代码托管平台Gitea

coxi_vv

开源软件 Gitea 1Panel

用友BIP3 R6发布,平台技术能力再升级

用友BIP

用友BIP超级版新品路演收官,加速中大型企业数智化进程

用友BIP

小谈容灾备份

天翼云开发者社区

云计算 容灾

10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战

我再BUG界嘎嘎乱杀

Python 数据挖掘 编程 数据分析 后端

CAT 对接观测云最佳实践

观测云

cat

提升用户体验:阿里巴巴拍立淘API返回值的个性化推荐

技术冰糖葫芦

API Explorer API boy API 接口 API 测试

下载量突破400万,百万开发者首选的 AI 编码工具通义灵码是如何炼成的?

阿里云云效

阿里云 云原生 通义灵码

区块链技术的基本理论

天翼云开发者社区

区块链

利用Halo 20分钟构建企业门户

coxi_vv

开源软件 halo 1Panel

下载量突破400万,百万开发者首选的 AI 编码工具通义灵码是如何炼成的?

阿里巴巴云原生

阿里云 云原生 通义灵码

浅谈ChatGPT在云计算资源调度的应用

天翼云开发者社区

云计算 大模型 ChatGPT

信创环境:鲲鹏ARM+麒麟V10离线部署K8s和Rainbond信创平台

北京好雨科技有限公司

kubernete rainbond 信创云 企业号 8 月 PK 榜 国产化平台

知网状告AI搜索:搜到我家论文题目和摘要,你侵权了!

Openlab_cosmoplat

人工智能

用友BIP超级版商旅费控,AI+成就一站式智慧出行

用友BIP

天翼云CDR基本概念

天翼云开发者社区

云计算 云主机 天翼云 容灾服务

东南亚TikTok直播:直播专线的重要性及其优势

Ogcloud

海外直播专线 tiktok运营 tiktok直播 tiktok直播专线 tiktok直播网络

基于LangChain手工测试用例转接口自动化测试生成工具

霍格沃兹测试开发学社

口腔专科医院实时数据中心:如何高效拆除数据烟囱,建立患者360视图,助力智慧医疗?

tapdata

Webpack 4.0 发布,带来配置简化、WebAssembly支持和性能提升_JavaScript_Kevin Ball_InfoQ精选文章