bhofstaetter / yaml-requirements
通过yaml配置替换需求,并对需求进行了一些有见地的改进
1.0.6
2023-01-10 22:06 UTC
Requires
- silverstripe/cms: ^4.0
README
通过yaml配置替换需求,并对需求进行了一些有见地的改进
安装
composer require bhofstaetter/yaml-requirements
为什么?
- 为了能够轻松覆盖和编辑需求,无论它们来自哪里。全局和基于每页。
- 为了防止包含相同库的多个版本(例如jQuery)。
- 为了根据项目需求或当前页面的需求调整需求的顺序。
- 为了能够本地提供外部需求。
- 为了进行一些SEO改进
使用方法
此模块的工作方式类似于通过控制器包含需求,通过Requirements::js/javascript(...)。需求必须存储并配置在所需页面控制器的新建yaml配置中。
- css:
`My\Cool\PageController.yamReq_css` - javascript:
`My\Cool\PageController.yamReq_javascript`
一个简单但不推荐的示例,因为它依赖于每个需求的预设默认值而工作
My\Cool\PageController:
yamReq_css:
https://external-domain.tld/some-styling.css:
file-in-public-dir.css:
所有需求至少应有一个`identifier`,可能还有一个`version`。这样,需求可以轻松交换和修改。此外,这还可以防止包含资源的多版本(例如,jquery 1.7、jquery 1.8、...)。仅使用给定标识的最新版本。
My\Cool\PageController:
yamReq_css:
https://external-domain.tld/some-styling.css:
identifier: 'some-styling'
version: '1.0.0'
file-in-public-dir.css:
identifier: 'shouldnt-be-here'
主题中的需求
My\Cool\PageController:
yamReq_css:
client/dist/css/styles.css:
identifier: 'theme-styles'
resolve: 'theme'
模块中的需求
My\Cool\PageController:
yamReq_css:
vendor/module-name:client/dist/css/warnings.css:
identifier: 'module-name-warnings'
resolve: 'module'
可用的需求配置选项
`identifier`:可以用来覆盖需求。具有相同标识符的多个需求将合并在一起。最高版本获胜。最高顺序获胜。`version`:此文件的版本,遵循Semver。你可以使用'1.999.999'或类似版本来表示这可能是此需求最高版本,并覆盖所有其他版本`include`:单个 | 合并 | 块`order`:一个数字,用于定义需求的包含顺序`resolve`:none | module | theme(none用于直接在public文件夹内部和外部资源中)`preload`:true | false`download`:true | false(尝试下载外部资源并在本地提供服务,即使是合并的)`preConnect`:true | false
配置
删除所有其他需求
删除通过YamlRequirements模块未包含的所有需求
bhofstaetter\YamlRequirements\RequirementsControllerExtension:
yamReq_clear_all_regular: true # default is false
为单个需求设置一些默认值
bhofstaetter\YamlRequirements\Collector:
default_download: true # try to download an external file and serve it locally
default_preload: false # insert preload tag for the requirement instead of a regular link
default_preConnect: true # add a preconnect link for an external resource
default_resolve: 'none'
default_order: 500
在页面级别阻止需求
My\Cool\PageController:
yamReq_block_inherited_css: true # prevents the inclusion from all parent controllers css requirements
yamReq_block_inherited_javascript: true # prevents the inclusion from all parents controllers js requirements
yamReq_block_css: true # prevents the inclusion from any css
yamReq_block_javascript: true # prevents the inclusion from any js
待办事项
- 错误日志到日志文件
- “快捷方式”顺序,如DefaultModuleOrder(500)或DefaultThemeOrder(300)或DefaultCustomOrder(100)
- 将常规需求转换为yaml需求(任务列出它们?)
- 下载外部需求的任务?
- 检查下载的文件何时刷新