nikrolls / ss-hashpath-manifest
dev-master
2020-10-29 08:34 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-08-29 05:43:33 UTC
README
受 heyday/silverstripe-hashpath 启发,此模块旨在为没有活动服务器组件用于即时重写哈希路径的静态发布站点而设计。它旨在与如 gulp-hash 这样的工具一起工作,这些工具在构建时对文件名进行哈希处理并生成路径解析的JSON清单。
安装
使用composer
$ composer require nikrolls/ss-hashpath-manifest
使用方法
先决条件
此模块做出了一些假设
- JSON清单文件与哈希文件位于同一文件夹中,或任何祖先文件夹
- 清单文件中的所有路径相对于清单文件的位置
- 清单文件负责其文件夹及其任何子文件夹中的所有哈希文件
配置
创建一个如下所示的yaml配置文件
NikRolls\SSHashPathManifest\HashPath: manifests: themes/default: manifest.json # Add more root paths and relative manifest paths as required, eg: # themes/alternate/build: output/manifest.json # themes/alternate: source/manifest.json # More specific paths should be first as the first matching one found is used.
themes/default/manifest.json
:
{ "js/main.js": "js/main.abcd1234.js", "css/main.css": "css/main.4321dcba.css" }
实现
您可以在 Requirements
调用或模板中翻译路径
use NikRolls\SSHashPathManifest\HashPath; Requirements::javascript(HashPath::singleton()->for('themes/default/js/main.js'));
<script src="resources/$HashPath('themes/default/js/main.js')"></script>
此模块所做的只是根据清单文件翻译路径,因此如果您的静态发布环境中存在资源前缀,只需将它们添加到路径之前。
如果没有找到路径的清单,或者找到了清单但未包含您请求的文件,则路径将保持不变。这允许您使用HashPath为构建文件夹中的每个文件,但通过您的构建过程控制路径解析(或不解析),例如。