npm 包 gulp-injectmd52self 使用教程

在前端开发中,我们经常会遇到需要将 HTML 文件中引用的 CSS、JS 文件进行合并、压缩等处理。而在合并的过程中,我们很容易遇到版本控制的问题。为了解决这个问题,我们可以使用 gulp-injectmd52self 这个 npm 包来给静态资源文件添加 md5 值,从而解决静态文件的缓存问题。

安装

在项目中,我们可以通过 npm 安装 gulp-injectmd52self,命令如下:

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

安装成功后,我们就可以在 gulpfile.js 中引入该模块:

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

接下来,我们来看一下具体的配置。

使用方法

gulp-injectmd52self 提供了两个方法:injectmd52self 和 rename。其中,injectmd52self 方法用于添加 md5 值,而 rename 方法则用于重命名文件名称。

injectmd52self 配置

我们可以在 gulp 任务中使用 injectmd52self 方法来生成添加了 md5 值的静态资源文件:

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

在这个配置中,我们将 index.html 文件通过 gulp.src 函数读取,并使用 pipe 方法传递给 injectmd52self 方法进行处理。然后我们将处理后的文件通过 pipe 方法传递给 gulp.dest 方法进行保存,路径为 dist 目录下。

当然,我们也可以通过一些配置项来对一些参数进行调整。下面是一些常用的配置项:

配置项 说明 默认值
length md5 值的长度,可选取 8、10、16、32 或 64。 8
ignoreLength md5 值不包含文件名长度。 false
md5Name md5 值后缀名,建议和文件名之间使用分隔符,例如 -、_ 等。 .md5
base 相对路径的基础路径。 process.cwd()
hashFunc 使用的 hash 算法,可选值为 'md5'、'sha1'、'sha256' 等。默认为 md5 md5

下面是一个配置示例:

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

rename 配置

在 injectmd52self 处理后,我们的文件名已经发生了变化。此时,我们可以在项目中引入 gulp-rev-collector 这个 npm 包,将 manifest 中存储的文件名信息进行替换,以达到文件的最终版控制。

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

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

代码中的 rev/**/*.json 表示我们需要处理的 manifest 文件路径,dist/*.html 表示我们需要替换的 HTML 文件路径。在执行该任务之前,需要先执行 inject 任务生成 dist/*.html 文件。

示例代码

最后,我们来看一下示例代码。我们假设有如下文件结构:

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

我们的目标是将所有的 CSS 和 JS 文件全部合并成一个,然后进行压缩处理,并给静态资源文件添加 md5 值,在 HTML 文件中进行引用,并替换版本号。

gulpfile.js 的配置如下:

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


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

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

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

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

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

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

在执行该任务之后,我们会在 dist 和 rev 目录下得到如下文件:

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

其中,dist 目录下的 index.html 文件已经替换了资源文件的路径,并添加了版本 md5 值;同时 CSS 和 JS 文件都已经被合并、压缩,并拥有了自己的版本 md5 值。rev 目录下的 manifest 文件则分别存储了 CSS 和 JS 文件的原始文件名与 md5 文件名之间的映射关系。

最后,我们将 dist 目录下的文件上传到服务器上,就达到了版本控制的目的。

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


猜你喜欢

  • npm 包 scas 使用教程

    什么是 scas? scas 是一款基于 JavaScript 的编译器,用于编译汇编语言(x86、x86-64、ARM 和 MSP430 等)。scas 基于 JavaScript 编写,并且支持浏...

    2 年前
  • npm 包 appalachia 使用教程

    简介 appalachia 是一个基于 React 的 UI 库,提供了一些常用的 UI 组件和工具函数。 安装 安装 appalachia 很简单,只需要在终端中输入下面的命令即可: --- ---...

    2 年前
  • npm 包 car-conductor 使用教程

    前言 在前端开发过程中,我们经常需要处理和管理大量的依赖。而 NPM 包管理器则是个高效、稳定、可扩展的包管理器,可以帮助我们完成此类任务。在本篇文章中,我们将介绍 npm 包 car-conduct...

    2 年前
  • npm 包 iks-datepicker 使用教程

    介绍 npm 包 iks-datepicker 是一个基于 jQuery 和 Bootstrap 框架开发的日期选择器组件,提供了可定制的样式和多种语言支持功能,可以广泛应用于 Web 开发中。

    2 年前
  • npm 包 front-matter-html 使用教程

    前言 在前端开发中,很多时候我们需要通过解析 Markdown 文件来生成 HTML 页面。而在 Markdown 文档中,可能会包含一些自定义的元数据,例如标题、作者、日期等。

    2 年前
  • npm 包 ecue-programmer-stream 使用教程

    简介 ecue-programmer-stream 是一个用于控制 e:cue 灯光设备的 npm 包。它提供了丰富的 API,可以让开发者灵活地控制这些设备的各种属性。

    2 年前
  • npm 包 classnames-simple 使用教程

    在前端开发中,我们常常需要根据不同的状态、条件来动态地生成 class 名称,以控制样式的表现。在这种情况下,很多开发者选择手动拼接字符串,这种方式不仅复杂、容易出错,还不利于维护和重构。

    2 年前
  • npm 包 mongoose-tree-materialized 使用教程

    简介 mongoose-tree-materialized 是一个基于 mongoose ORM 进行开发的树形结构查询框架。这个框架使用了 Materialized Paths(材料化路径)这种数据...

    2 年前
  • npm 包 with-backbone 使用教程

    什么是 with-backbone with-backbone 是一个 npm 包,它为开发者提供了一个用于构建基于 Backbone.js 的前端项目的快速开发框架。

    2 年前
  • npm包modular-json使用教程

    前言 在前端开发中,常常需要处理 JSON 数据,如果数据结构比较复杂,传统的 JSON 解析方式会变得比较繁琐,而 npm 包 modular-json 可以帮助我们更便捷地处理 JSON 数据,本...

    2 年前
  • npm 包 nconf-pro 使用教程

    npm 包 nconf-pro 使用教程 在前端开发中,我们通常需要使用不同的配置信息来控制我们的应用程序的行为。因此,为了更好的管理和使用配置信息,我们可以使用 npm 包 nconf-pro。

    2 年前
  • npm 包 react-modal-dream-ui 使用教程

    在现今互联网技术时代,前端开发已经成为了至关重要的一个职业。而作为一名前端开发人员,使用 npm 包使代码变得相当简单。npm 是一个 JavaScript 包管理器,它允许用户以开放包格式共享代码和...

    2 年前
  • npm 包 paessler-iconfont 使用教程

    #npm 包 paessler-iconfont 使用教程 ##介绍 paessler-iconfont 是一款简便易用的 npm 包,它提供了 4000 多个图标供我们进行使用,这些图标可用于我们的...

    2 年前
  • npm 包 node-osx-mediacontrol 使用教程

    Node.js 是一个非常流行的 JavaScript 运行时环境,广受前端开发者的喜爱。而 npm 则是 Node.js 生态圈中的包管理工具,用于管理和分享 JavaScript 包。

    2 年前
  • npm 包 eq-express-middleware-acl 使用教程

    前言 在开发 Web 应用程序时,往往需要对用户权限进行管理和控制。而 eq-express-middleware-acl 是一个基于 Node.js 的中间件,可以帮助我们在 Express 应用程...

    2 年前
  • npm 包 room-cli 使用教程

    介绍 room-cli 是一个基于 Node.js 的命令行工具,可以让前端开发者通过命令行快速创建项目,管理依赖包等。通过使用 room-cli,可以提高前端项目的开发效率和可维护性。

    2 年前
  • npm 包 haierplugin 使用教程

    介绍 Haierplugin 是一个面向海尔企业级开发的 npm 包,提供了一系列的组件和工具,帮助前端开发者快速构建优秀的海尔企业级应用。该技术文章旨在向前端开发者详细介绍该工具的使用方法,并提供示...

    2 年前
  • npm 包 matchr 使用教程

    简介 matchr 是一个简单的字符串匹配工具,支持使用通配符进行模糊匹配,可以快速搜索、筛选和处理字符串集合。 在前端开发过程中,经常需要对字符串进行比较和判断,而 matchr 则提供了一个快速、...

    2 年前
  • npm 包 oxygenflow 使用教程

    在前端开发中,包管理器是必不可少的工具。而目前最流行的包管理器就是 npm。它可以轻松地安装和管理开源软件包。 oxygenflow 是一款基于 npm 包的工具,提供前端开发中常用的函数和插件,使用...

    2 年前
  • npm 包 socketio-jwt-configurable 使用教程

    在前端开发中,Socket.IO 是一个常用的实时通信库。而 JWT(JSON Web Token)则是一种安全的身份验证方式。socketio-jwt-configurable 是一款用于 Sock...

    2 年前

相关推荐

    暂无文章