nikrolls/ss-hashpath-manifest

安装次数: 3,566

依赖关系: 0

建议者: 0

安全性: 0

星星: 0

关注者: 1

分支: 0

类型:silverstripe-vendormodule

dev-master 2020-10-29 08:34 UTC

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

使用方法

先决条件

此模块做出了一些假设

  1. JSON清单文件与哈希文件位于同一文件夹中,或任何祖先文件夹
  2. 清单文件中的所有路径相对于清单文件的位置
  3. 清单文件负责其文件夹及其任何子文件夹中的所有哈希文件

配置

创建一个如下所示的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为构建文件夹中的每个文件,但通过您的构建过程控制路径解析(或不解析),例如。