jonathanmaron/increment-version

increment-version 帮助您以编程方式维护项目根目录下包含版本号的 .version 文件。使用此版本号,您可以轻松地以编程方式使具有长期过期头(例如存储在 CDN 上)的资源 URI 无效。

2.0.1 2018-05-31 08:17 UTC

This package is auto-updated.

Last update: 2024-09-04 10:50:00 UTC


README

当与具有长期过期头的 CDN(CSS、JS 和图片文件具有长期过期头)一起工作时,当现有文件被覆盖时能够以编程方式使缓存无效非常方便。

例如,当 styles.min.css 文件被重新构建,如果源 SASS 文件中发生了变化。

使 CDN 无效的一种方法是通过更改资源的 URI,例如,在 URI 中放置版本号

http://www.example.com/application-x.x.x/css/styles.min.css

其中 x.x.x 是版本号。

increment-version 提供了一个易于使用的 CLI API,以维护项目根目录下的 .version 文件。

使用 .version 文件,然后您的应用程序可以构建包含版本号的 URI。

请注意,increment-version 仅支持数字语义版本号,不支持包含构建和预发布组件的语义版本号。

例如,increment-version 支持 1.2.3,但不支持 1.2.3-alpha.1+build.12345.ea4f51

使用示例

初始化您的项目

increment-version --path="/var/www/www.example.com" --init

.version 文件设置为 0.0.5

increment-version --path="/var/www/www.example.com" --set="0.0.5"

增加 .version 文件的次要版本号

increment-version --path="/var/www/www.example.com" --major

增加 .version 文件的修复版本号

increment-version --path="/var/www/www.example.com" --minor

增加 .version 文件的主版本号

increment-version --path="/var/www/www.example.com" --patch

增加 .version 文件的主、次和修复版本号

increment-version --path="/var/www/www.example.com" --major --minor --patch

如何在您的项目中使用

  • 在编译 SASS 到 CSS 的构建脚本中
  • 在编译 CoffeeScript 到 JavaScript 的构建脚本中
  • 在优化图片文件的构建脚本中

在上述所有情况下,都有意义地增加 .version 文件,以强制网络浏览器下载刚刚创建的资源的新版本。

安装

通过 composer 安装

cd ~/install-path

composer create-project jonathanmaron/increment-version

建议将 ~/bin 包含在您的 PATH 变量中

PATH=$PATH:~/install-path/increment-version/bin

以便 increment-version 对登录用户全局可用。

别名 URI

在您的 Web 项目的根公共目录中,您应该创建一个目录,在该目录中您将存储所有具有长期过期头的资源。

例如,application-0.0.0

然后,您可以使用 Apache 的 mod_alias 创建以下规则

AliasMatch "^/application-(\d{1,10}).(\d{1,10}).(\d{1,10})/(.*)$" "/var/www/www.example.com/public/application-0.0.0/$4"

该规则实际上从 URI 中删除版本号。例如

/application-1.2.3/img/logo.jpg

映射到

/application-0.0.0/img/logo.jpg

这是文件在文件系统中的实际存储位置。

上述示例支持最多 10 位的版本号、次要版本号和修复版本号。

将版本号添加到 URI 中

将版本号添加到资源 URI 的最简单方法是编写一个辅助函数,并用该函数包装所有嵌入的 URI。

辅助函数读取根目录中的 .version 并将其添加到 URI 中。

另一种方法是编写一个可以访问整个页面 HTML 的函数(例如,Zend Framework 事件完成)。该函数应简单地搜索 application-0.0.0,并将其替换为存储在 .version 中的版本号。

这样,循环就闭合了。

您只需记住在覆盖任何内容时更新 .version,这样就可以确保网页的 HTML 中的资源引用总是获取到最新的版本。