npm 包 @coursehero/theia-invalidate-build-manifest-cache-plugin 使用教程

简介

在前端开发过程中,我们常常需要借助 webpack 等工具将源代码打包成可执行的 JavaScript、CSS 等文件。然而,由于文件变动较为频繁,每次打包完毕后,为了避免缓存,我们通常会对文件名或者路径等进行修改,以便强制客户端重新下载最新的文件。

针对这个问题,@coursehero/theia-invalidate-build-manifest-cache-plugin这个 npm 包提供了一个非常方便的解决方案。该插件可以在每次构建完成后,在 build 目录下生成一个 manifest.json 的文件,记录下该次构建所生成的文件名和 hash 值等信息。在下次打包时,如果某个文件已经生成过,会根据该文件的 hash 值判断是否需要更新,以避免不必要的文件下载。

安装

你可以通过 npm 安装该插件,指令如下:

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

安装完成后,你需要通过以下方式在 webpack.config.js 中进行配置:

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

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

注意,此插件需要用在 webpack 的生命周期的 afterEmit 阶段,以便可以正确地生成 manifest.json 文件。因此,请确保在 webpack.config.js 中已配置了 output.filename 和 output.path 等选项。

使用

在插件默认配置下,该插件会在每次构建完毕后,在 output.path 目录下生成一个 manifest.json 文件,内容包含了每个入口打包完毕后输出的文件与其 hash 值对应关系的映射。同时,在下次构建时,将读取该文件,并且根据文件名或者路径等判断是否需要更新静态资源。

举个例子,在 myproject 目录下,我定义了一个 webpack 配置文件 webpack.config.js 如下:

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

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

每次运行 webpack 构建完毕后,你会在 myproject/dist 目录下看到一个 manifest.json 文件,内容如下:

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

当我们修改了 src/index.js 后重新构建时,webpack 会进行以下处理:

从 manifest.json 文件中读取上一次构建所生成的文件名和 hash 值的映射。

根据入口文件,生成新的文件输出到指定目录下,并用新的哈希值更新 manifest.json 文件。

在项目发布时,服务器不缓存带有未知哈希前缀(即文件名中未知的哈希值)的静态文件,这可以提高项目启动的速度。另外,由于每个打包后的文件名包含了其哈希值,你无需手动管理文件名或者文件路径以避免缓存。

高级用法

该插件提供了丰富的配置选项,以便你能够更好地控制构建流程。以下是该插件的所有选项:

  • filename:定义构建完成后生成的 cache manifest 文件名(默认为 manifest.json)。

  • path:定义构建完成后生成的 cache manifest 文件的存储路径(默认为 output.path)。

  • hashLength:定义哈希值长度(默认为 8)。

  • keepOriginalManifest:是否在重新构建时保留上一次的 cache manifest 文件(默认为 false)。

  • updateTimestamp:指定 cache manifest 文件在更新时是否更新其修改时间(默认为 true)。

  • apply:自定义插件生效的钩子(默认为 compiler)。

可以在 webpack.config.js 中以参数形式传入,如下:

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

当你通过自定义的 apply 钩子设置插件生效时,也需要特别注意保证钩子的时机是在 afterEmit 之后,否则可能产生未知的行为。

结语

通过本文的介绍,你应该已经了解了 @coursehero/theia-invalidate-build-manifest-cache-plugin 这个 npm 包的使用方法,以及如何在项目中充分利用它的特性。在使用过程中,如果你遇到了任何问题,可以参考官方文档或者在 GitHub 上提交 issues 寻求帮助。希望我们能够通过这篇文章,帮助你更好地提高前端项目的构建效率和稳定性。

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


猜你喜欢

  • npm包 @ipfn/base32使用教程

    简介 在前端开发中,很多情况下需要进行数据加密或编码操作。其中,base32编码就是一种十分常见的编码方式,它可以将二进制数据转换为可视化的字符串形式,使得数据传输和存储更加安全和可靠。

    3 年前
  • npm 包 @arted/utils 使用教程

    在前端开发中,我们经常需要编写一些辅助函数来帮助我们开发更高效、更简洁的代码。而使用 npm 包可以省去我们大量的重复工作,提高开发的效率。 @arted/utils 是一个面向前端开发的 npm 包...

    3 年前
  • npm 包 generate-resume 使用教程

    介绍 npm 包 generate-resume 是一个帮助前端开发者快速生成简历的工具,能够根据用户提供的信息生成易于调整和美观的简历模板。本文将详细介绍该工具的使用方法,包括安装、配置、使用等内容...

    3 年前
  • NPM包`npm-sendmsg`使用教程

    npm-sendmsg是一个在前端开发过程中方便发送消息的NPM包。本文将介绍如何在自己的项目中使用npm-sendmsg。 安装 --- ------- ----------- ------使用 引...

    3 年前
  • npm 包 jseda 使用教程

    介绍 在前端开发过程中,经常会使用到一些开源的第三方库,而 npm 是目前最流行的 JavaScript 包管理器。本文将介绍一款名为 jseda 的 npm 包,它是一个轻量级的 websocket...

    3 年前
  • npm 包 waves-audio 使用教程

    什么是 waves-audio? waves-audio 是一个基于 Web Audio API 的 JavaScript 库,提供了处理音频的各种工具。它可以用于音乐合成、音频可视化、音频处理等多种...

    3 年前
  • npm 包 @xsites/selectize 使用教程

    前言 @xsites/selectize 是一个基于 jQuery 和 Selectize.js 开发的简单易用的多选下拉框插件。本文将就使用该 npm 包进行详细的介绍和使用教程。

    3 年前
  • npm 包 ant-design-vue-echart-theme 使用教程

    随着前端技术的不断发展,可视化数据呈现越来越受到重视。Echarts 是一个基于 JavaScript 的开源可视化图表库,底层依赖于 ZRender,提供直观,丰富,可交互,可高度个性化定制的数据可...

    3 年前
  • npm 包 deliveroo-cli 使用教程

    简介 npm 是一个 JavaScript 包管理器,deliveroo-cli 是其中一个 npm 包,提供了一些用于快速开发应用程序的命令行工具。它可以帮助前端开发者更好地管理项目,提高工作效率。

    3 年前
  • npm 包 harbor-master-wb 使用教程

    简介 Harbor-master-wb 是一个基于 Node.js 的开源工具包,用于编写前端代码时解决项目工程化、模块化等问题。它包含了许多常用的工具库和插件,可以帮助开发者更加高效地开发、调试和构...

    3 年前
  • npm包 iobroker.onkyo-vis-dev 使用教程

    概述 iobroker.onkyo-vis-dev 是一个用于从 Onkyo AV 接收器获取信息的 npm 包。通过它,您可以在 ioBroker 的 Onkyo 配置中集成您的 AV 接收器,并使...

    3 年前
  • npm 包 fabric-wrapper 使用教程

    前言 在前端开发中,使用 canvas 绘图库是很常见的需求。fabric.js 是一个功能丰富、灵活且易于使用的开源 canvas 库。它提供了许多基本几何形状、动画效果等实用功能,可以为开发者提供...

    3 年前
  • npm 包 file-minify-webpack-plugin 使用教程

    在前端开发中,为了使网页更快地加载,我们通常需要对资源文件进行压缩和优化。file-minify-webpack-plugin 是一个基于 Webpack 的 npm 包,可以帮助我们对静态资源文件进...

    3 年前
  • npm 包 `is-dark-mode` 使用教程

    前言 随着黑暗模式在网站和应用程序中的普及,开发人员需要一种简便的方法来检测用户的显示外观设置。因此,开发者就想到了一个 npm 包,即 is-dark-mode。

    3 年前
  • npm 包 lockesedemo 使用教程

    npm 包 lockesedemo 使用教程 在前端开发过程中,我们经常会用到各种不同的第三方库和工具。而这些库和工具都是通过 npm 包管理工具来安装和管理的。在使用这些库时,由于版本的更新和不同开...

    3 年前
  • ninjakatt-plugin-kodi 使用教程

    在前端开发中,我们经常会使用一些开源的库和插件来提高开发效率和实现更复杂的功能。npm 是最常用的 JavaScript 包管理工具之一,并且拥有大量的开发者社区和开源的 npm 包供我们选择和使用。

    3 年前
  • npm 包 markusjs 使用教程

    前言 在前端开发中,我们经常需要完成各种各样的效果和交互。常常需要用到一些第三方库来实现这些功能,而 npm 包就是我们最常用的一种方式之一。 今天,我们来介绍一款用于生成 Markdown 文件的 ...

    3 年前
  • npm 包 raduikit 使用教程

    npm 是 JavaScript 最大的包管理系统。我们可以通过 npm 安装许多现成的 JavaScript 包来加快我们的开发效率。其中,raduikit 是一个强大的前端 UI 框架,它提供了许...

    3 年前
  • npm 包 dot-link 使用教程

    npm 是一个非常优秀的包管理工具,能够方便地通过一个简单的命令安装和管理各种前端组件和框架。随着项目规模和代码复杂度的增加,我们经常会遇到多个项目之间需要共享一些代码的情况,这个时候我们就需要用到 ...

    3 年前
  • npm 包 sketchrnn 使用教程

    在前端领域,涉及到手写模型生成和自然语言处理的应用都需要良好的生成和识别技术。当前社区中,一种叫做 sketchrnn 的 npm 包变得非常流行,因其方便易用,能够用于生成图案和模拟手写轨迹。

    3 年前

相关推荐

    暂无文章