npm 包 webpack-extract-subresource-integrity 使用教程

Webpack 是前端开发中常用的打包工具,它可以将多个 JavaScript、CSS、图片等文件打包成一个或多个文件,并实现代码优化、文件压缩等功能。但是在使用 Webpack 打包时,由于各个资源之间的依赖关系以及资源的引用方式不同,会出现如下几个问题:

  • 外部资源(如 CDN 资源)无法被自动处理,需要手动处理资源引用路径,以及添加 subresource integrity(SRI)等属性。
  • 在某些情况下,我们希望将某些资源直接引入 HTML 中,而不是打包到 js 文件中,如字体文件。
  • 当我们使用 Webpack 打包多个应用时,公共依赖如果被打包多次会造成无谓的代码冗余。

针对这些问题,我们可以使用 webpack-extract-subresource-integrity 这个 npm 包来解决。

什么是 webpack-extract-subresource-integrity

webpack-extract-subresource-integrity 是一个 Webpack 插件,可以将 Webpack 打包生成的 JavaScript、CSS 等资源文件中的外部资源(如 CDN 资源)转为本地文件,并添加 subresource integrity(SRI)等属性。它的主要特点包括:

  • 可以自动处理并替换 js 文件中的外部资源引用路径,并在 HTML 中添加 SRI 属性。
  • 可以将某些文件(如字体、图标)直接引入到 HTML 中,而不是打包到 js 文件中,以加快页面加载速度和减少应用的大小。
  • 能够去除重复的依赖项,减少应用代码的冗余。

如何使用 webpack-extract-subresource-integrity

下面我们将演示如何使用 webpack-extract-subresource-integrity 这个 npm 包,将 project1 和 project2 两个应用的公共依赖打包成一个文件,并将字体引入 HTML 中。

安装

首先需要对 webpack-extract-subresource-integrity 进行安装

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

配置

在 Webpack 配置文件中,需要添加 webpack-extract-subresource-integrity 插件。具体配置如下:

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

这里的主要配置项包括:

  • enableCssIntegrity:是否启用对 CSS 的 SRI 属性处理。
  • enableJsIntegrity:是否启用对 JavaScript 的 SRI 属性处理。
  • enableFontIntegrity:是否启用对字体的处理,将其 inline 到 HTML 中。
  • enableIconIntegrity:是否启用对图标的处理,将其 inline 到 HTML 中。
  • removeDuplicateDependencies:是否启用去重功能,去除多个应用中的可能重复的共享依赖。
  • fileNames:生成的文件名模板。
  • fontInlineLimit:字体文件 inline 的最大大小,超过这个大小的将被打包到 js 文件中。

示例代码

接下来我们将根据上面的配置文件打包 project1 和 project2 两个应用,示例代码如下:

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

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

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

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

上面的示例代码中,我们在 project1 和 project2 中引入了 lodash-es 依赖,它们位于 node_modules 目录中。而我们的 Webpack 配置文件指定了将这些依赖打包到 'common.js' 文件中,因此我们可以看到打包生成的文件如下:

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

其中 common.js 为包含 lodash-es 依赖的公共依赖文件。我们使用 Webpack 生成的 HTML 文件如下:

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

在生成的 HTML 文件中,我们可以看到 common.js 文件被添加了 subresource integrity(SRI)属性,而字体文件则被 inline 到了 HTML 中。

总结

在实际的开发中,我们经常需要使用 Webpack 进行应用的打包。然而,由于应用之间存在较多的依赖关系以及资源引用方式不同等原因,会导致一些问题的出现,如外部资源无法自动处理、字体文件过多、公共依赖冗余等问题。本文我们介绍了 webpack-extract-subresource-integrity 这个 npm 包的使用方法,可以自动解决上述问题,并生成更加优化的应用。

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


猜你喜欢

  • npm 包 nanachi-web-transpiler 使用教程

    简介 nanachi-web-transpiler 是一款基于 React 开发的跨端应用开发工具,支持快速构建基于 React 的 H5、小程序、快应用等多端应用,并能将其统一管理。

    4 年前
  • npm 包 element-ui-zp 使用教程

    在前端开发中,使用封装好的 UI 框架可以加速开发效率,提高开发质量。而 Element UI 是一个基于 Vue.js 的组件库,它提供了一系列的常用组件,且易于使用。

    4 年前
  • npm 包 pdf_diagram 使用教程

    在前端开发中,我们经常需要生成 PDF 文件来呈现数据或报告,而 pdf_diagram 是一款优秀而且易于使用的 npm 包,它可以让开发者们轻松地生成高质量的 PDF 文档。

    4 年前
  • npm 包 command-line-arg-map 使用教程

    简介 在前端开发中,我们经常需要处理命令行参数。而 command-line-arg-map 是一款 npm 包,可以方便地将命令行参数解析为一个 JavaScript 对象。

    4 年前
  • npm 包 fs-readdir-sync-with-file-types 使用教程

    前言 在前端开发中,我们经常需要操作一些本地文件,如读取文件夹下的所有文件,获取文件的扩展名等。Node.js 提供了一些内置模块来帮助我们完成这些操作,其中 fs 模块是最基础的文件系统模块之一,它...

    4 年前
  • npm 包 imagemap 使用教程

    简介 imagemaps 是一个可以用于生成图像热区(image map)的 JavaScript 库,它可以让你在图像上添加链接,而不是只能通过图像的边界进行点击。

    4 年前
  • npm 包 firstwq 使用教程

    npm(Node Package Manager)是一个广泛使用的 JavaScript 包管理器,其中包含数千个可重用的 JavaScript 代码库。首先,我们来了解一下什么是 npm 包,然后介...

    4 年前
  • npm 包 pay-key-board 使用教程

    1. 引入 pay-key-board 包 在命令行中输入以下指令,安装 pay-key-board 第三方库。 --- ------- -------------引入 pay-key-board 库...

    4 年前
  • 介绍 learnscript npm 包

    learnscript 是一个非常实用的 npm 包,它可以帮助前端开发者在学习 JavaScript 的过程中提高效率,同时还能帮助开发者快速入门 Node.js 前后端开发。

    4 年前
  • npm 包 psi-v5 使用教程

    简介 psi-v5 是一个基于 Google PageSpeed Insights 的 npm 包,可用于检测网站性能并展示分析结果。它可以测量页面速度指标,并提供性能建议来使您的页面更快运行、更响应...

    4 年前
  • npm 包 text-rpg-engine 使用教程

    介绍 text-rpg-engine 是一个在命令行上运行的文本式 RPG 引擎。使用它,你可以快速创建含有交互性和响应性的剧情体验。这个 npm 包不仅提供了方便的方法来创建 RPG 游戏,而且还可...

    4 年前
  • npm包dva-model-extend使用教程

    简介 在前端开发中,使用合适的工具可以有效提高开发效率。dva-model-extend是一款帮助我们扩展dva model功能的npm包,本文将介绍它的使用教程。

    4 年前
  • npm 包 react-native-custom-keyboard-s 使用教程

    在 React Native 中,我们可以使用内置的键盘组件来满足一些简单的需求。但是,如果我们需要创建一个自定义键盘,或者需要在键盘中添加一些自定义功能,那么该怎么办呢?这时候,react-nati...

    4 年前
  • npm 包 format-tools 使用教程

    在前端开发中,我们经常会处理各种数据格式。但如何确保处理后的数据格式是符合规范的呢?这时我们就需要使用一个强大的 npm 包 format-tools。本文将详细介绍如何安装和使用它。

    4 年前
  • npm 包 react-to-print-advanced 使用教程

    在前端开发中,我们经常需要将页面或组件转化为 PDF、图片或者打印。而 react-to-print-advanced 是一个非常优秀的 npm 包,可以帮助我们方便地实现页面或组件的打印功能。

    4 年前
  • npm 包 jfurn-palindrome 使用教程

    简介 npm 是前端开发过程中经常使用的包管理工具,可以方便地引入第三方库或自己编写的模块,极大地提高开发效率。其中,jfurn-palindrome 作为一个npm包,实现了判断字符串是否是回文的功...

    4 年前
  • npm 包 babel-preset-manpacker 使用教程

    介绍 在前端开发中,使用 ES6/7 的语法能够提高编码效率,但是由于浏览器兼容性问题,很多新的语法无法在低版本的浏览器中运行,所以我们需要使用 babel 将 ES6/7 的语法转换为可以在低版本浏...

    4 年前
  • npm 包 uppercase-example 使用教程

    什么是 npm 包? npm 是 Node.js 的包管理器,是全球最大的开源软件库。使用 npm 包,可以轻松地在项目中引入第三方代码,并且可以一键安装或更新。 如何安装 npm 包? 在终端中切换...

    4 年前
  • npm 包 @tarvit/smart_delay 使用教程

    介绍 @tarvit/smart_delay 是一个可以用于前端应用程序的 JavaScript 库,它提供了一种精细的工具来控制多个事件的延迟时间。 本文将介绍如何在前端应用程序中使用 @tarvi...

    4 年前
  • npm 包 ipa-inheritance 使用教程

    简介 ipa-inheritance 是一个基于 JavaScript 的 npm 包,用于实现 JavaScript 中的类继承。它可以帮助开发者更加轻松地创建复杂的类层次结构,提高代码的重用性和可...

    4 年前

相关推荐

    暂无文章