Schema of .shopware-extension.yml

Any configuration field is optional. When you create a .shopware-extension.yml, you also get IDE autocompletion for all fields.

Put the .shopware-extension.yml inside the root directory of your extension: /var/www/myshop/custom/plugins/<YourExtension>/.shopware-extension.yml

# .shopware-extension.yml
build:
    # override the auto-detection of the shopware constraint
    shopwareVersionConstraint: `~6.5.0`

    # build additional bundles for assets
    extraBundles:
        # when only path passed the folder name will be used as bundle name
        - path: MySecondBundle
        # or specify it explicitly
        - name: DifferentName
          path: Bundle
    zip:
        composer:
            # disable composer install, enabled by default
            enabled: true

            # run commands before composer install or after
            before_hooks:
                - echo "Before"
            after_hooks:
                - echo "After"

            # exclude packages from installing into the vendor folder of the plugin
            excluded_packages:
                - symfony/filesystem
        assets:
            # disable building assets, builds by default
            enabled: true

            # run commands before asset building or after
            before_hooks:
                - echo "Before"
            after_hooks:
                - echo "After"

            # use bundled esbuild instead of default compile
            enable_es_build_for_admin: false

            # use bundled esbuild instead of default compile
            enable_es_build_for_storefront: false

            # all package.json of this extension will be installed with `npm install --production`, therefore, devDependencies will be ignored
            npm_strict: false

        pack:
            # run commands before packing the zip
            before_hooks:
                - echo "Before"

            # paths to skip for zipping
            excludes:
                paths:
                    - .idea

store:
    # override default icon path
    icon: icon.png

    # store availabilities
    availabilities:
        - German
        - International

    # store localizations, see json schema for all names
    localizations:
        - de_DE
        - en_GB

    # default locale
    default_locale: en_GB

    # store category, see json schema for all names
    categories:
        - Administration

    # type: extension or theme
    type: extension

    # auto mark patch versions as compatible
    automatic_bugfix_version_compatibility: true

    videos:
        en:
            - https://yotuube.com/...
        de:
            - ....

    tags:
        en:
            - tag
        de:
            - ...

    highlights:
        en:
            - tag
        de:
            - ...

    features:
        en:
            - tag
        de:
            - ...

    faq:
        - question: Can the extension do this?
          answer: Yes, it can ....

    description:
        # inline
        en: |
            Write inline
        # embed an html or markdown file
        de: file:src/Resources/store/description.md

    installation_manual:
        # inline
        en: |
            Write inline
        # embed an html or markdown file
        de: file:src/Resources/store/manual.md

    # Similar to images, but automatically picks all files from that directory
    # Use image_directory or images, not both
    # The sorting of Go is used, so 10.png will be before 2.png
    image_directory: 'src/Resources/store/images'

    # Can be only used, if image_directory is not defined
    images:
        - file: src/Resources/store/images/1.png
          # toggle visibility in that language
          activate:
            en: true
            de: true
          # preview image in that language
          preview:
            en: true
            de: true
          # sorting of the images
          priority: 1

changelog:
    # enable automatic changelog generation
    enabled: false

    # use openai to generate a better changelog based on commit messages. Requires OPENAI_TOKEN set
    ai_enabled: false

    # limit with regex which commits should be considered
    pattern: ''

    # allows to override the changelog generation template
    template: |
        {{range .Commits}}- [{{ .Message }}]({{ $.Config.VCSURL }}/{{ .Hash }})
        {{end}}

    # Allows to write RegEx groups into variables which can be used in the template
    variables:
        # extract the ticket number into variable.
        # can be then used in the template with {{ .Variables.ticket }}
        ticket: ^(NEXT-[0-9]+)