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

阅读时长 6 分钟读完

简介

在前端开发过程中,我们常常需要借助 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

纠错
反馈