jonathanmaron / increment-version
increment-version 帮助您以编程方式维护项目根目录下包含版本号的 .version 文件。使用此版本号,您可以轻松地以编程方式使具有长期过期头(例如存储在 CDN 上)的资源 URI 无效。
Requires
- php: ^7.1
- container-interop/container-interop: ^1.2
- naneau/semver: ^0.0.7
- symfony/console: ^4.1
- symfony/lock: ^4.1
Requires (Dev)
- phpunit/phpunit: ^6.4
- squizlabs/php_codesniffer: ^3.0
- symfony/var-dumper: ^4.0
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 中的资源引用总是获取到最新的版本。