HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:002400

评论

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

低多边形植物模型法线贴图

3D建模设计

3D渲染 材质贴图 纹理贴图 材质纹理 材质编辑

从根上理解elasticsearch(lucene)查询原理(1)-lucece查询逻辑介绍

EquatorCoco

Elastic Stack 查询 优化工具

语音数据集:AI语音技术的基石

来自四九城儿

优化大模型的关键策略

百度开发者中心

大模型 深度学习、

软件测试/人工智能丨掌握视觉CV处理技术对软件测试工作的帮助

测试人

人工智能 软件测试

2024年程序员必须掌握的10款开发工具

伤感汤姆布利柏

敏捷开发 低代码 开发工具 测试工具 前端开发工具

云原生之旅:一年的变革、成长与启示

熬夜磕代码、

3D模型材质丢失怎么办?

3D建模设计

3D渲染 材质贴图 材质编辑

如何为3D模型导入材质贴图

3D建模设计

3D渲染 纹理贴图 材质编辑

OpenHarmony创新赛人气投票活动,最佳人气作品由你来定!

OpenHarmony开发者

OpenHarmony

注册中心元数据的应用

姚秋实(Nacol)

Java 架构 配置中心 元数据 metadata

大算力与大模型的融合之力

百度开发者中心

nlp 大模型

31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系

鲁米

新型生成式 AI 助手 Amazon Q 为 IT 专业人士与开发人员提供有力支持(预览版)

亚马逊云科技 (Amazon Web Services)

re:Invent Amazon EC2 生成式人工智能 Amazon Lambda Amazon Chatbot

Fine-tuning: 一种针对大模型的优化策略

百度开发者中心

nlp 大模型

KaiwuDB 获评信通院 2023 大数据“星河”标杆案例

KaiwuDB

KaiwuDB “星河”标杆案例

持续测试性能的方法

敏捷开发

DevOps 性能测试 自动化测试 CD 持续测试

华为云CodeArts Artifact:保障制品质量与安全的最佳选择

华为云PaaS服务小智

云计算 软件开发 华为云

语音数据集:推动AI语音技术的核心力量

来自四九城儿

软件测试/人工智能丨Spark开发分布式造数,构建大规模测试数据

测试人

人工智能 软件测试

分布式基础概念-消息中间件[RabbitMQ]

派大星

Java 面试题

语音数据集:为AI注入听觉的力量

来自四九城儿

从互联网到云计算再到 AI 原生,百度智能云数据库的演进

百度Geek说

人工智能 云计算 云原生 企业号12月PK榜

mac专业视觉特效包处理工具 FxFactory pro 8 激活最新版

mac大玩家j

Mac软件 视觉特效插件

【教程】制作 iOS 推送证书

雪奈椰子

【等保】安徽省等保测评机构名单看这里!

行云管家

等保 等级保护 等保测评 安徽

Wireshark使用技巧

小齐写代码

AnyGo for Mac(虚拟定位软件) 6.9永久激活版

mac

苹果mac Windows软件 虚拟定位软件 AnyGo

区块链铭文系统开发详情

l8l259l3365

浪潮云连续2年跻身中国分布式云市场领导者象限

云计算 数据云

软件测试/人工智能/PyTorch技术在软件测试中的应用

测试人

人工智能 软件测试

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