npm 包 @purtuga/esm-webpack-plugin 使用教程

现代 Web 开发中,前端模块化已经成为了基础。ES Module 规范是目前大家都认同的一种模块化方案,实现了标准化的模块加载、导出方式。随着 ESM 的不断普及,Webpack 也将 ESM 纳入支持范畴,可以使用 ESM 方式导入和导出模块。

而在处理 ESM 的同时,Webpack 也有它自己的一些要求,例如输出格式、编译规则、模块解析等等。Webpack 原生支持 ESM 规范的能力在不停加强,但还存在一些问题,比如不能很好地处理 ESM 的热更新问题。这时候,@purtuga/esm-webpack-plugin 就能派上用场,它是一款为改善使用 ESM 在 Webpack 中时的一些麻烦而写的插件。本文将详细介绍如何使用它来支持 ESM 在 Webpack 中的构建。

@purtuga/esm-webpack-plugin 的特性

  • 提供 ESM 输出规范(module 维度导入/导出方式)下的输出,可通过 output.module 属性配置开启;
  • 启用热更新时,也同样支持 ESM 在 HMR 下的热更新;
  • 启用了 ESM 时,默认开启 sideEffects: false,支持 tree-shaking;
  • 在处理 ESM 时,使用 Webpack 原生的解析规则;
  • 支持同时处理底层依赖项的 ESM 格式;
  • 可中断构建过程;
  • 完整的 TypeScript 类型定义。

安装与使用

- -- ---------------------------
--- ------- ---------- ---------------------------

使用 @purtuga/esm-webpack-plugin 的步骤和一般使用 Webpack 插件相同:

  • 在 Webpack 配置 plugins 属性中添加 @purtuga/esm-webpack-plugin 的实例
  • 启用 ESM 输出规范:在 Webpack 配置中,设置 output.module 为 true。

配置示例

-- -----------------
----- ---------------- - ---------------------------------------
-------------- - -
  -- ----- ----------
  ------- -
    --------- ------------
    ----- ----------------------- --------
    ------- -----
  --
  -------- -
    --- -------------------
    -- ----- ----------
  -
-

示例代码

接下来,我们来看以下示例代码

-- -------------
------ -------- ------ -- -
  ------ - - --
-

-- ------------
------ ----- --- - --- -- -- - - --

-- --------------
------ - ---- --------
------ - --- - ---- ---------

在通过 @purtuga/esm-webpack-plugin 处理上述代码时,它会生成一个 ESM 规范的输出文件:

-- ---------------
------ - --- - ---- -----------
------ ------
------ - --- - ---- ------------
------ ------

如果我们以 ESM 方式引入它,将会有如下用法:

---- ---------- ---
------- --------------
  ------ - --- - ---- ------------------

  ------------------- ---- -- ------ --
---------

可以看到,@purtuga/esm-webpack-plugin 会自动为输出文件生成符合 ESM 规范的导出声明,这样使得 Webpack 在处理 ESM 时更加符合规范,同时也让定位问题、排错更加方便。

总结

使用 @purtuga/esm-webpack-plugin 插件能够方便的支持 Webpack 下的 ESM 和热更新,同时也符合 ESM 规范,在提高开发效率的同时,也能缩减前端应用的性能和体积。快来试试吧!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedad64b5cbfe1ea0610c57


猜你喜欢

  • npm 包 @types/topojson-server 使用教程

    前言 在 Web 开发中,地图可视化已经变得越来越流行。TopoJSON 是一个非常有效的工具,它可以为地图提供高质量的数据,而 @types/topojson-server 则是一个在 TypeSc...

    4 年前
  • npm 包 @types/topojson-simplify 使用教程

    什么是 TopoJSON? TopoJSON 是一种表示地理数据的格式,类似于 GeoJSON,但它更专注于地图拓扑结构的维护和应用。TopoJSON 可以使用较小的文件尺寸表示较大的、高精度的地图数...

    4 年前
  • npm 包 @types/topojson-specification 使用教程

    前置知识 在使用本教程之前,需要了解以下基础知识: Node.js 和 npm 的基本使用方法。 TypeScript 的基本语法和知识点。 简介 @types/topojson-specific...

    4 年前
  • npm 包 @types/topojson 使用教程

    前言 TopoJSON 是一个基于 JSON 的地理空间数据格式,它可以表示拓扑关系,而不仅仅是几何形状。而 @types/topojson 是 TopoJSON 的 TypeScript 声明文件包...

    4 年前
  • npm 包 @turf/bbox-clip 使用教程

    简介 在前端开发中,地理数据是一个非常重要且常见的数据类型。而 @turf/bbox-clip 是一个在地理数据处理方面非常便利的 npm 包,他可以将一个地理数据按照矩形边界进行裁剪。

    4 年前
  • npm 包 @turf/bbox-polygon 使用教程

    npm 是前端开发中常用的包管理工具,通过 npm 可以简单快捷地引入各种常用的前端工具和库。一款常用的前端工具库为 @turf,它是一个专门处理地图或地理数据的 JavaScript 库。

    4 年前
  • npm 包 @turf/boolean-contains 使用教程

    在前端开发中,我们经常需要处理地理位置数据,比如计算两点之间的距离或者判断一个点是否在指定的区域内。@turf/boolean-contains 就是一个非常实用的npm包,可以用来判断一个点是否在一...

    4 年前
  • npm 包 uic-codes 使用教程

    简介 在前端开发中,我们经常需要使用行政区划编码、国际机场编码、国际货运编码等各种编码数据。这时候,一个好用的 npm 包 uic-codes 就派上了用场,它包含了多个国际标准编码的数据,并提供了方...

    4 年前
  • npm 包 @turf/bezier-spline 使用教程

    概述 在地理空间分析中,曲线是一个常见的概念。然而,真实的地图数据通常不是直线,而是复杂的曲线。这时候就需要一种方法将复杂的曲线转化为光滑的曲线。而在前端工具中,npm 包 @turf/bezier-...

    4 年前
  • npm 包 @turf/flatten 使用教程

    在前端开发中,地理信息系统(GIS)的应用愈发广泛,因此处理空间数据的需求也逐渐增长。针对这一需求,Turf.js 是一个十分优秀的 JavaScript 库。其中,@turf/flatten 包是 ...

    4 年前
  • npm 包 more-words 使用教程

    随着前端开发的不断发展,我们越来越需要使用各种 JavaScript 工具和库来解决我们的问题。而 npm 包更是前端开发中的必备工具之一。其中,more-words npm 包可以帮助我们扩展我们的...

    4 年前
  • npm包cli-autocomplete使用教程

    简介 npm包cli-autocomplete是一个用于实现命令行自动补全的工具。 该工具主要用于在命令行中使用npm包的命令时,输入命令时命令行会提示出可能的选项,方便用户进行选择。

    4 年前
  • npm 包 @turf/boolean-clockwise 使用教程

    前言 在前端开发中,地理信息系统(GIS)是一个非常重要的领域。而 @turf/boolean-clockwise 便是一个非常重要的 npm 包,它可以帮助我们判断给定的点数组是否是符合顺时针方向的...

    4 年前
  • npm 包 tokenize-db-station-name 使用教程

    介绍 在前端开发中,经常需要处理和操作字符串。例如,在汽车租赁公司的网站中,用户可能需要输入起点和终点的车站名称,而这些车站名称需要进行转换和处理,以便进行查询。这时候,npm 包 tokenize-...

    4 年前
  • npm 包 compute-db-station-weight 使用教程

    在前端开发中,我们经常会涉及到处理数据的情况,特别是在与后端的数据库交互时,需要更好地理解和处理数据。此时,npm 包 compute-db-station-weight 可以提供很大的帮助。

    4 年前
  • npm 包 db-hafas 使用教程

    npm 包 db-hafas 使用教程 随着区块链、物联网、大数据等技术的不断发展,人们对于智能化出行的需求越来越高。而数字化时代下的出行方式,无疑是以API(Application Programm...

    4 年前
  • npm 包 hafas-collect-departures-at 使用教程

    如果你需要获取一段时间内的车站的实时出发信息,那么 hafas-collect-departures-at 可能是你需要的 npm 包。本文将详细介绍 hafas-collect-departures...

    4 年前
  • npm包 @derhuerst/br2nl使用教程

    介绍 在前端开发中,我们经常需要将用户提交或后端返回的文本格式化展示到页面上。在HTML中,要换行需要使用<br>标签。但是有些情况,浏览器或后端服务器返回的文本格式为“”而不是真正的换行...

    4 年前
  • npm 包 google-polyline 使用教程

    在前端领域中,处理地理数据是一项常见的任务。其中,将地图上的点、线、面编码为字符串,即 Polyline 算法,是其中的一项重要技术。Google Maps API 提供了强大的 Polyline 编...

    4 年前
  • npm 包 vbb-parse-ticket 使用教程

    前言 随着互联网和数字化时代的到来,交通出行已经越来越普及,车票成为人们生活中不可或缺的一部分。在区别于传统纸质车票、电子车票和二维码车票之外,德国柏林交通公司(VBB)提供了一种新型车票——智能车票...

    4 年前

相关推荐

    暂无文章