bhofstaetter/yaml-requirements

通过yaml配置替换需求,并对需求进行了一些有见地的改进

安装: 13

依赖: 1

建议者: 0

安全: 0

星星: 0

分支: 0

类型:silverstripe-vendormodule

1.0.6 2023-01-10 22:06 UTC

This package is auto-updated.

Last update: 2024-09-11 01:26:16 UTC


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需求(任务列出它们?)
  • 下载外部需求的任务?
  • 检查下载的文件何时刷新