Project

General

Profile

Task #87422 ยป 2021-0616 TYPO3 Extension Meta-Manifest.md

Oliver Hader, 2021-06-16 09:32

 

TYPO3 Extension Meta-Manifest

Goals

  • declare additional information about extension/package
  • to be used by machines (the TYPO3 core system)
    • (a bit like substititon for ext_emconf.php)
    • e.g. in content-security-policy
    • e.g. for extension-key mapping
    • e.g. for caching behavior
  • to be used by humans (to spot capabilities/features/behavior)
    • e.g. for searching matching extensions in TER
    • e.g. for searching extensions "having a backend module" (which is a capability)
  • most probably included into composer.json

Inspiration

Draft, integrated to composer.json extra section

{
    "name": "vendor/extension",
    "type": "typo3-cms-extension",
    ...
    "extra": {
        "typo3/cms": {
            "extension-key": "workspaces",
            "extension": {
                "key": "workspaces",
                "state": "stable",
                "category": "be",
                "clearCacheOnLoad": true
            }
            "assets": [
                {
                    "type": "script",
                    "url": "^https://www.googletagmanager.com/gtm.js"
                },
                {
                    "type": "style",
                    "url": "https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css",
                    "hash": "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM",
                    "description": "Required for properly rendering all styles"
                },
                {
                    "type": "script",
                    "file": "^Resources/Public/JavaScript/"
                },
                {
                    "type": "font",
                    "file": "^Resources/Public/Fonts/my-font.woff"
                }
            ],
            "fetches": [
                {
                    "method": "GET",
                    "url": "https://extensions.typo3.org/fileadmin/ter/extensions.xml.gz"
                },
                {
                    "methods": ["HEAD", "POST"],
                    "url": "^https://spy-ware.olly.de/typo-spy/"
                }
            ],
            "features": [
                {
                    "scope": "backend",
                    "type": "module",
                    "id": "tx-extension-web-mymodule"
                },
                {
                    "scope": "backend",
                    "type": "contextmenu-item",
                    "id": "tx-extension-clone-command"
                },
                {
                    "scope": "backend",
                    "type": "toolbar-item",
                    "id": "tx-extension-current-weather"
                }
            ],
            "modifications": [
                {
                    "scope": "filesystem",
                    "type": "directory",
                    "path": "fileadmin/form_definitions/"
                }
            ]
        }
    }
}
    (1-1/1)