[{"data":1,"prerenderedAt":5837},["ShallowReactive",2],{"blog-current-traefik-magic-de":3,"blog-previous-traefik-magic-de":1251,"blog-next-traefik-magic-de":1265,"blog-alt-de-traefik-magic-de":1266,"blog-alt-en-traefik-magic-de":1267,"employee-robert-juzak":1269,"related-refs-devops--de":1368,"content-query-K9Z9yOwvGV":1393,"content-query-KtO3wftRle":5802},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"author":10,"image":11,"releaseDate":12,"blogCategories":13,"articleTags":16,"tags":17,"body":19,"_type":1245,"_id":1246,"_source":1247,"_file":1248,"_stem":1249,"_extension":1250},"/blog/traefik-magic","blog",false,"","Verwendung von Traefik als Reverse Proxy - Convention over Configuration","Wie man den Traefik Reverse Proxy so konfiguriert, dass man auf Traefik-spezifische Labels verzichten kann und automatisch Subdomains passend zum Namen des Compose-Projekts geroutet werden.","robert-juzak","/images/dev-ops-dark.svg","2026-03-13",[14,15],"Was uns bewegt","DevOps",[15],[18],"devops",{"type":20,"children":21,"toc":1235},"root",[22,37,42,191,196,271,278,307,312,340,353,372,378,395,496,501,506,531,577,581,586,951,956,992,999,1007,1061,1065,1072,1100,1106,1111,1117,1122,1134,1142,1148,1160,1229],{"type":23,"tag":24,"props":25,"children":26},"element","p",{},[27,35],{"type":23,"tag":28,"props":29,"children":31},"a",{"href":30},"https://doc.traefik.io/traefik/",[32],{"type":33,"value":34},"text","Traefik",{"type":33,"value":36}," ist ein Reverse Proxy mit exzellenter Docker-Integration. Er verwendet Labels, die an Containern angebracht sind, um den Datenverkehr zu ihnen zu leiten.",{"type":23,"tag":24,"props":38,"children":39},{},[40],{"type":33,"value":41},"Ein typisches Set an Labels sieht ungefähr so aus:",{"type":23,"tag":43,"props":44,"children":55},"pre",{"code":45,"filename":46,"highlights":47,"language":53,"meta":7,"className":54,"style":7},"services:\n  whoami:\n    image: traefik/whoami\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.whoami.rule=Host(`whoami.example.com`)\"\n      - \"traefik.http.routers.whoami.entrypoints=websecure\"\n      - \"traefik.http.routers.whoami.tls=true\"\n      - \"traefik.http.routers.whoami.tls.certresolver=letsencrypt\"\n","whoami/docker-compose.yaml",[48,49,50,51,52],5,6,7,8,9,"yaml","language-yaml shiki shiki-themes github-dark github-dark monokai",[56],{"type":23,"tag":57,"props":58,"children":59},"code",{"__ignoreMap":7},[60,78,91,111,124,139,152,165,178],{"type":23,"tag":61,"props":62,"children":65},"span",{"class":63,"line":64},"line",1,[66,72],{"type":23,"tag":61,"props":67,"children":69},{"style":68},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[70],{"type":33,"value":71},"services",{"type":23,"tag":61,"props":73,"children":75},{"style":74},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[76],{"type":33,"value":77},":\n",{"type":23,"tag":61,"props":79,"children":81},{"class":63,"line":80},2,[82,87],{"type":23,"tag":61,"props":83,"children":84},{"style":68},[85],{"type":33,"value":86},"  whoami",{"type":23,"tag":61,"props":88,"children":89},{"style":74},[90],{"type":33,"value":77},{"type":23,"tag":61,"props":92,"children":94},{"class":63,"line":93},3,[95,100,105],{"type":23,"tag":61,"props":96,"children":97},{"style":68},[98],{"type":33,"value":99},"    image",{"type":23,"tag":61,"props":101,"children":102},{"style":74},[103],{"type":33,"value":104},": ",{"type":23,"tag":61,"props":106,"children":108},{"style":107},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[109],{"type":33,"value":110},"traefik/whoami\n",{"type":23,"tag":61,"props":112,"children":114},{"class":63,"line":113},4,[115,120],{"type":23,"tag":61,"props":116,"children":117},{"style":68},[118],{"type":33,"value":119},"    labels",{"type":23,"tag":61,"props":121,"children":122},{"style":74},[123],{"type":33,"value":77},{"type":23,"tag":61,"props":125,"children":128},{"class":126,"line":48},[63,127],"highlight",[129,134],{"type":23,"tag":61,"props":130,"children":131},{"style":74},[132],{"type":33,"value":133},"      - ",{"type":23,"tag":61,"props":135,"children":136},{"style":107},[137],{"type":33,"value":138},"\"traefik.enable=true\"\n",{"type":23,"tag":61,"props":140,"children":142},{"class":141,"line":49},[63,127],[143,147],{"type":23,"tag":61,"props":144,"children":145},{"style":74},[146],{"type":33,"value":133},{"type":23,"tag":61,"props":148,"children":149},{"style":107},[150],{"type":33,"value":151},"\"traefik.http.routers.whoami.rule=Host(`whoami.example.com`)\"\n",{"type":23,"tag":61,"props":153,"children":155},{"class":154,"line":50},[63,127],[156,160],{"type":23,"tag":61,"props":157,"children":158},{"style":74},[159],{"type":33,"value":133},{"type":23,"tag":61,"props":161,"children":162},{"style":107},[163],{"type":33,"value":164},"\"traefik.http.routers.whoami.entrypoints=websecure\"\n",{"type":23,"tag":61,"props":166,"children":168},{"class":167,"line":51},[63,127],[169,173],{"type":23,"tag":61,"props":170,"children":171},{"style":74},[172],{"type":33,"value":133},{"type":23,"tag":61,"props":174,"children":175},{"style":107},[176],{"type":33,"value":177},"\"traefik.http.routers.whoami.tls=true\"\n",{"type":23,"tag":61,"props":179,"children":181},{"class":180,"line":52},[63,127],[182,186],{"type":23,"tag":61,"props":183,"children":184},{"style":74},[185],{"type":33,"value":133},{"type":23,"tag":61,"props":187,"children":188},{"style":107},[189],{"type":33,"value":190},"\"traefik.http.routers.whoami.tls.certresolver=letsencrypt\"\n",{"type":23,"tag":24,"props":192,"children":193},{},[194],{"type":33,"value":195},"In diesem Beispiel:",{"type":23,"tag":197,"props":198,"children":199},"ul",{},[200,212,228,233,245,250],{"type":23,"tag":201,"props":202,"children":203},"li",{},[204,210],{"type":23,"tag":57,"props":205,"children":207},{"className":206},[],[208],{"type":33,"value":209},"whoami",{"type":33,"value":211}," ist der Name des \"Haupt\"-Dienstes (2)",{"type":23,"tag":201,"props":213,"children":214},{},[215,220,222],{"type":23,"tag":57,"props":216,"children":218},{"className":217},[],[219],{"type":33,"value":209},{"type":33,"value":221}," ist auch der Standard-",{"type":23,"tag":28,"props":223,"children":225},{"href":224},"https://docs.docker.com/compose/how-tos/project-name/",[226],{"type":33,"value":227},"Name des Compose-Projekts",{"type":23,"tag":201,"props":229,"children":230},{},[231],{"type":33,"value":232},"Traefik wird aktiviert (5)",{"type":23,"tag":201,"props":234,"children":235},{},[236,238,243],{"type":33,"value":237},"Der Dienst wird unter der Subdomain ",{"type":23,"tag":57,"props":239,"children":241},{"className":240},[],[242],{"type":33,"value":209},{"type":33,"value":244}," bereitgestellt (6)",{"type":23,"tag":201,"props":246,"children":247},{},[248],{"type":33,"value":249},"Die Auslieferung erfolgt über HTTPS (7)",{"type":23,"tag":201,"props":251,"children":252},{},[253,255,261,263,269],{"type":33,"value":254},"Ein vorkonfigurierter Certresolver namens ",{"type":23,"tag":57,"props":256,"children":258},{"className":257},[],[259],{"type":33,"value":260},"letsencrypt",{"type":33,"value":262}," wird für ",{"type":23,"tag":57,"props":264,"children":266},{"className":265},[],[267],{"type":33,"value":268},"tls",{"type":33,"value":270}," verwendet (8-9)",{"type":23,"tag":272,"props":273,"children":275},"h2",{"id":274},"das-problem",[276],{"type":33,"value":277},"Das Problem",{"type":23,"tag":24,"props":279,"children":280},{},[281,283,289,291,297,299,305],{"type":33,"value":282},"In meinem ",{"type":23,"tag":28,"props":284,"children":286},{"href":285},"/blog/gitops-docker-renovate",[287],{"type":33,"value":288},"anderen Beitrag über GitOps mit Docker",{"type":33,"value":290}," habe ich das Konzept eingeführt,\n",{"type":23,"tag":57,"props":292,"children":294},{"className":293},[],[295],{"type":33,"value":296},"git",{"type":33,"value":298}," als „Source of Truth“ für Docker-Deployments mittels ",{"type":23,"tag":28,"props":300,"children":302},{"href":301},"https://docs.docker.com/compose/",[303],{"type":33,"value":304},"Docker Compose",{"type":33,"value":306}," zu nutzen.",{"type":23,"tag":24,"props":308,"children":309},{},[310],{"type":33,"value":311},"Dabei gibt es einige Anforderungen:",{"type":23,"tag":197,"props":313,"children":314},{},[315,328],{"type":23,"tag":201,"props":316,"children":317},{},[318,320,326],{"type":33,"value":319},"Jeder Stack ist unter ",{"type":23,"tag":57,"props":321,"children":323},{"className":322},[],[324],{"type":33,"value":325},"\u003Cstack_name>.\u003Cyour_domain>",{"type":33,"value":327}," erreichbar",{"type":23,"tag":201,"props":329,"children":330},{},[331,333,338],{"type":33,"value":332},"Jeder Stack ist mit ",{"type":23,"tag":57,"props":334,"children":336},{"className":335},[],[337],{"type":33,"value":268},{"type":33,"value":339}," geschützt",{"type":23,"tag":24,"props":341,"children":342},{},[343,345,351],{"type":33,"value":344},"Wir könnten zwar in jeder ",{"type":23,"tag":57,"props":346,"children":348},{"className":347},[],[349],{"type":33,"value":350},"docker-compose.yaml",{"type":33,"value":352}," die Labels manuell hinzufügen, doch dabei zeigt sich schnell,\ndass wir die Konfiguration redundant wiederholen.",{"type":23,"tag":354,"props":355,"children":356},"ol",{},[357,362,367],{"type":23,"tag":201,"props":358,"children":359},{},[360],{"type":33,"value":361},"Traefik aktivieren",{"type":23,"tag":201,"props":363,"children":364},{},[365],{"type":33,"value":366},"Eine Subdomain zuweisen",{"type":23,"tag":201,"props":368,"children":369},{},[370],{"type":33,"value":371},"HTTPS aktivieren",{"type":23,"tag":272,"props":373,"children":375},{"id":374},"die-lösung",[376],{"type":33,"value":377},"Die Lösung",{"type":23,"tag":24,"props":379,"children":380},{},[381,383,393],{"type":33,"value":382},"Mit hilfe der ",{"type":23,"tag":28,"props":384,"children":386},{"href":385},"https://docs.docker.com/compose/how-tos/environment-variables/envvars/#compose_project_name",[387],{"type":23,"tag":57,"props":388,"children":390},{"className":389},[],[391],{"type":33,"value":392},"$COMPOSE_PROJECT_NAME",{"type":33,"value":394},"\nVariable können wir ein generisches Template für eine solche Konfiguration erstellen.\nDadurch stellen wir sicher, dass die Traefik-Regeln einheitlich sind.",{"type":23,"tag":43,"props":396,"children":399},{"code":397,"filename":398,"language":53,"meta":7,"className":54,"style":7},"services:\n  \u003Cmain_service>:\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.$COMPOSE_PROJECT_NAME.rule=Host(`\u003Cstack_name>.example.com`)\"\n      - \"traefik.http.routers.$COMPOSE_PROJECT_NAME.entrypoints=websecure\"\n      - \"traefik.http.routers.$COMPOSE_PROJECT_NAME.tls=true\"\n      - \"traefik.http.routers.$COMPOSE_PROJECT_NAME.tls.certresolver=letsencrypt\"\n","\u003Cstack_name>/docker-compose.yaml",[400],{"type":23,"tag":57,"props":401,"children":402},{"__ignoreMap":7},[403,414,426,437,448,460,472,484],{"type":23,"tag":61,"props":404,"children":405},{"class":63,"line":64},[406,410],{"type":23,"tag":61,"props":407,"children":408},{"style":68},[409],{"type":33,"value":71},{"type":23,"tag":61,"props":411,"children":412},{"style":74},[413],{"type":33,"value":77},{"type":23,"tag":61,"props":415,"children":416},{"class":63,"line":80},[417,422],{"type":23,"tag":61,"props":418,"children":419},{"style":68},[420],{"type":33,"value":421},"  \u003Cmain_service>",{"type":23,"tag":61,"props":423,"children":424},{"style":74},[425],{"type":33,"value":77},{"type":23,"tag":61,"props":427,"children":428},{"class":63,"line":93},[429,433],{"type":23,"tag":61,"props":430,"children":431},{"style":68},[432],{"type":33,"value":119},{"type":23,"tag":61,"props":434,"children":435},{"style":74},[436],{"type":33,"value":77},{"type":23,"tag":61,"props":438,"children":439},{"class":63,"line":113},[440,444],{"type":23,"tag":61,"props":441,"children":442},{"style":74},[443],{"type":33,"value":133},{"type":23,"tag":61,"props":445,"children":446},{"style":107},[447],{"type":33,"value":138},{"type":23,"tag":61,"props":449,"children":450},{"class":63,"line":48},[451,455],{"type":23,"tag":61,"props":452,"children":453},{"style":74},[454],{"type":33,"value":133},{"type":23,"tag":61,"props":456,"children":457},{"style":107},[458],{"type":33,"value":459},"\"traefik.http.routers.$COMPOSE_PROJECT_NAME.rule=Host(`\u003Cstack_name>.example.com`)\"\n",{"type":23,"tag":61,"props":461,"children":462},{"class":63,"line":49},[463,467],{"type":23,"tag":61,"props":464,"children":465},{"style":74},[466],{"type":33,"value":133},{"type":23,"tag":61,"props":468,"children":469},{"style":107},[470],{"type":33,"value":471},"\"traefik.http.routers.$COMPOSE_PROJECT_NAME.entrypoints=websecure\"\n",{"type":23,"tag":61,"props":473,"children":474},{"class":63,"line":50},[475,479],{"type":23,"tag":61,"props":476,"children":477},{"style":74},[478],{"type":33,"value":133},{"type":23,"tag":61,"props":480,"children":481},{"style":107},[482],{"type":33,"value":483},"\"traefik.http.routers.$COMPOSE_PROJECT_NAME.tls=true\"\n",{"type":23,"tag":61,"props":485,"children":486},{"class":63,"line":51},[487,491],{"type":23,"tag":61,"props":488,"children":489},{"style":74},[490],{"type":33,"value":133},{"type":23,"tag":61,"props":492,"children":493},{"style":107},[494],{"type":33,"value":495},"\"traefik.http.routers.$COMPOSE_PROJECT_NAME.tls.certresolver=letsencrypt\"\n",{"type":23,"tag":24,"props":497,"children":498},{},[499],{"type":33,"value":500},"Die gute Nachricht ist, dass Traefik es uns ermöglicht, einige Standardwerte zu konfigurieren, die den oben genannten Boilerplate-Code abdecken!",{"type":23,"tag":24,"props":502,"children":503},{},[504],{"type":33,"value":505},"Führen wir zwei einfache Konventionen ein:",{"type":23,"tag":354,"props":507,"children":508},{},[509,520],{"type":23,"tag":201,"props":510,"children":511},{},[512,518],{"type":23,"tag":57,"props":513,"children":515},{"className":514},[],[516],{"type":33,"value":517},"app",{"type":33,"value":519}," als Name des \"Hauptcontainers\", damit Traefik den Datenverkehr dorthin leitet",{"type":23,"tag":201,"props":521,"children":522},{},[523,529],{"type":23,"tag":57,"props":524,"children":526},{"className":525},[],[527],{"type":33,"value":528},"\u003Cstack_name>",{"type":33,"value":530}," (der Name des Compose-Projekts) in der Subdomain",{"type":23,"tag":43,"props":532,"children":535},{"code":533,"filename":534,"language":53,"meta":7,"className":54,"style":7},"services:\n  app:\n    image: traefik/whoami\n","(1) whoami/docker-compose.yaml",[536],{"type":23,"tag":57,"props":537,"children":538},{"__ignoreMap":7},[539,550,562],{"type":23,"tag":61,"props":540,"children":541},{"class":63,"line":64},[542,546],{"type":23,"tag":61,"props":543,"children":544},{"style":68},[545],{"type":33,"value":71},{"type":23,"tag":61,"props":547,"children":548},{"style":74},[549],{"type":33,"value":77},{"type":23,"tag":61,"props":551,"children":552},{"class":63,"line":80},[553,558],{"type":23,"tag":61,"props":554,"children":555},{"style":68},[556],{"type":33,"value":557},"  app",{"type":23,"tag":61,"props":559,"children":560},{"style":74},[561],{"type":33,"value":77},{"type":23,"tag":61,"props":563,"children":564},{"class":63,"line":93},[565,569,573],{"type":23,"tag":61,"props":566,"children":567},{"style":68},[568],{"type":33,"value":99},{"type":23,"tag":61,"props":570,"children":571},{"style":74},[572],{"type":33,"value":104},{"type":23,"tag":61,"props":574,"children":575},{"style":107},[576],{"type":33,"value":110},{"type":23,"tag":578,"props":579,"children":580},"hr",{},[],{"type":23,"tag":24,"props":582,"children":583},{},[584],{"type":33,"value":585},"Nun konfigurieren wir Traefik, um \"die Magie\" wirken zu lassen:",{"type":23,"tag":43,"props":587,"children":590},{"code":588,"filename":589,"language":53,"meta":7,"className":54,"style":7},"volumes:\n  letsencrypt:\n    \nservices:\n  traefik:\n    container_name: traefik\n    restart: always\n    image: traefik:3\n    network_mode: host\n    command:\n      - --certificatesresolvers.letsencrypt.acme.httpchallenge=true\n      - --certificatesresolvers.letsencrypt.acme.email=\u003Cyour_email_here>\n      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n      - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\n\n      - --entrypoints.web.address=:80\n      - --entrypoints.websecure.address=:443\n      \n      - --entrypoints.web.http.redirections.entrypoint.to=websecure\n      - --entrypoints.web.http.redirections.entrypoint.scheme=https\n      - --entrypoints.websecure.http.tls.certresolver=letsencrypt\n\n      - --providers.docker\n      - --providers.docker.defaultrule=Host(`{{ trimPrefix `app-` .Name }}.example.com`)\n      - --providers.docker.constraints=Label(`com.docker.compose.service`,`app`)\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock:ro\n      - /letsencrypt:/letsencrypt\n","(2) traefik/docker-compose.yaml",[591],{"type":23,"tag":57,"props":592,"children":593},{"__ignoreMap":7},[594,606,618,626,637,649,666,683,699,716,729,742,755,768,781,791,804,817,826,839,852,865,873,886,899,912,925,938],{"type":23,"tag":61,"props":595,"children":596},{"class":63,"line":64},[597,602],{"type":23,"tag":61,"props":598,"children":599},{"style":68},[600],{"type":33,"value":601},"volumes",{"type":23,"tag":61,"props":603,"children":604},{"style":74},[605],{"type":33,"value":77},{"type":23,"tag":61,"props":607,"children":608},{"class":63,"line":80},[609,614],{"type":23,"tag":61,"props":610,"children":611},{"style":68},[612],{"type":33,"value":613},"  letsencrypt",{"type":23,"tag":61,"props":615,"children":616},{"style":74},[617],{"type":33,"value":77},{"type":23,"tag":61,"props":619,"children":620},{"class":63,"line":93},[621],{"type":23,"tag":61,"props":622,"children":623},{"style":74},[624],{"type":33,"value":625},"    \n",{"type":23,"tag":61,"props":627,"children":628},{"class":63,"line":113},[629,633],{"type":23,"tag":61,"props":630,"children":631},{"style":68},[632],{"type":33,"value":71},{"type":23,"tag":61,"props":634,"children":635},{"style":74},[636],{"type":33,"value":77},{"type":23,"tag":61,"props":638,"children":639},{"class":63,"line":48},[640,645],{"type":23,"tag":61,"props":641,"children":642},{"style":68},[643],{"type":33,"value":644},"  traefik",{"type":23,"tag":61,"props":646,"children":647},{"style":74},[648],{"type":33,"value":77},{"type":23,"tag":61,"props":650,"children":651},{"class":63,"line":49},[652,657,661],{"type":23,"tag":61,"props":653,"children":654},{"style":68},[655],{"type":33,"value":656},"    container_name",{"type":23,"tag":61,"props":658,"children":659},{"style":74},[660],{"type":33,"value":104},{"type":23,"tag":61,"props":662,"children":663},{"style":107},[664],{"type":33,"value":665},"traefik\n",{"type":23,"tag":61,"props":667,"children":668},{"class":63,"line":50},[669,674,678],{"type":23,"tag":61,"props":670,"children":671},{"style":68},[672],{"type":33,"value":673},"    restart",{"type":23,"tag":61,"props":675,"children":676},{"style":74},[677],{"type":33,"value":104},{"type":23,"tag":61,"props":679,"children":680},{"style":107},[681],{"type":33,"value":682},"always\n",{"type":23,"tag":61,"props":684,"children":685},{"class":63,"line":51},[686,690,694],{"type":23,"tag":61,"props":687,"children":688},{"style":68},[689],{"type":33,"value":99},{"type":23,"tag":61,"props":691,"children":692},{"style":74},[693],{"type":33,"value":104},{"type":23,"tag":61,"props":695,"children":696},{"style":107},[697],{"type":33,"value":698},"traefik:3\n",{"type":23,"tag":61,"props":700,"children":701},{"class":63,"line":52},[702,707,711],{"type":23,"tag":61,"props":703,"children":704},{"style":68},[705],{"type":33,"value":706},"    network_mode",{"type":23,"tag":61,"props":708,"children":709},{"style":74},[710],{"type":33,"value":104},{"type":23,"tag":61,"props":712,"children":713},{"style":107},[714],{"type":33,"value":715},"host\n",{"type":23,"tag":61,"props":717,"children":719},{"class":63,"line":718},10,[720,725],{"type":23,"tag":61,"props":721,"children":722},{"style":68},[723],{"type":33,"value":724},"    command",{"type":23,"tag":61,"props":726,"children":727},{"style":74},[728],{"type":33,"value":77},{"type":23,"tag":61,"props":730,"children":732},{"class":63,"line":731},11,[733,737],{"type":23,"tag":61,"props":734,"children":735},{"style":74},[736],{"type":33,"value":133},{"type":23,"tag":61,"props":738,"children":739},{"style":107},[740],{"type":33,"value":741},"--certificatesresolvers.letsencrypt.acme.httpchallenge=true\n",{"type":23,"tag":61,"props":743,"children":745},{"class":63,"line":744},12,[746,750],{"type":23,"tag":61,"props":747,"children":748},{"style":74},[749],{"type":33,"value":133},{"type":23,"tag":61,"props":751,"children":752},{"style":107},[753],{"type":33,"value":754},"--certificatesresolvers.letsencrypt.acme.email=\u003Cyour_email_here>\n",{"type":23,"tag":61,"props":756,"children":758},{"class":63,"line":757},13,[759,763],{"type":23,"tag":61,"props":760,"children":761},{"style":74},[762],{"type":33,"value":133},{"type":23,"tag":61,"props":764,"children":765},{"style":107},[766],{"type":33,"value":767},"--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n",{"type":23,"tag":61,"props":769,"children":771},{"class":63,"line":770},14,[772,776],{"type":23,"tag":61,"props":773,"children":774},{"style":74},[775],{"type":33,"value":133},{"type":23,"tag":61,"props":777,"children":778},{"style":107},[779],{"type":33,"value":780},"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\n",{"type":23,"tag":61,"props":782,"children":784},{"class":63,"line":783},15,[785],{"type":23,"tag":61,"props":786,"children":788},{"emptyLinePlaceholder":787},true,[789],{"type":33,"value":790},"\n",{"type":23,"tag":61,"props":792,"children":794},{"class":63,"line":793},16,[795,799],{"type":23,"tag":61,"props":796,"children":797},{"style":74},[798],{"type":33,"value":133},{"type":23,"tag":61,"props":800,"children":801},{"style":107},[802],{"type":33,"value":803},"--entrypoints.web.address=:80\n",{"type":23,"tag":61,"props":805,"children":807},{"class":63,"line":806},17,[808,812],{"type":23,"tag":61,"props":809,"children":810},{"style":74},[811],{"type":33,"value":133},{"type":23,"tag":61,"props":813,"children":814},{"style":107},[815],{"type":33,"value":816},"--entrypoints.websecure.address=:443\n",{"type":23,"tag":61,"props":818,"children":820},{"class":63,"line":819},18,[821],{"type":23,"tag":61,"props":822,"children":823},{"style":74},[824],{"type":33,"value":825},"      \n",{"type":23,"tag":61,"props":827,"children":829},{"class":63,"line":828},19,[830,834],{"type":23,"tag":61,"props":831,"children":832},{"style":74},[833],{"type":33,"value":133},{"type":23,"tag":61,"props":835,"children":836},{"style":107},[837],{"type":33,"value":838},"--entrypoints.web.http.redirections.entrypoint.to=websecure\n",{"type":23,"tag":61,"props":840,"children":842},{"class":63,"line":841},20,[843,847],{"type":23,"tag":61,"props":844,"children":845},{"style":74},[846],{"type":33,"value":133},{"type":23,"tag":61,"props":848,"children":849},{"style":107},[850],{"type":33,"value":851},"--entrypoints.web.http.redirections.entrypoint.scheme=https\n",{"type":23,"tag":61,"props":853,"children":855},{"class":63,"line":854},21,[856,860],{"type":23,"tag":61,"props":857,"children":858},{"style":74},[859],{"type":33,"value":133},{"type":23,"tag":61,"props":861,"children":862},{"style":107},[863],{"type":33,"value":864},"--entrypoints.websecure.http.tls.certresolver=letsencrypt\n",{"type":23,"tag":61,"props":866,"children":868},{"class":63,"line":867},22,[869],{"type":23,"tag":61,"props":870,"children":871},{"emptyLinePlaceholder":787},[872],{"type":33,"value":790},{"type":23,"tag":61,"props":874,"children":876},{"class":63,"line":875},23,[877,881],{"type":23,"tag":61,"props":878,"children":879},{"style":74},[880],{"type":33,"value":133},{"type":23,"tag":61,"props":882,"children":883},{"style":107},[884],{"type":33,"value":885},"--providers.docker\n",{"type":23,"tag":61,"props":887,"children":889},{"class":63,"line":888},24,[890,894],{"type":23,"tag":61,"props":891,"children":892},{"style":74},[893],{"type":33,"value":133},{"type":23,"tag":61,"props":895,"children":896},{"style":107},[897],{"type":33,"value":898},"--providers.docker.defaultrule=Host(`{{ trimPrefix `app-` .Name }}.example.com`)\n",{"type":23,"tag":61,"props":900,"children":902},{"class":63,"line":901},25,[903,907],{"type":23,"tag":61,"props":904,"children":905},{"style":74},[906],{"type":33,"value":133},{"type":23,"tag":61,"props":908,"children":909},{"style":107},[910],{"type":33,"value":911},"--providers.docker.constraints=Label(`com.docker.compose.service`,`app`)\n",{"type":23,"tag":61,"props":913,"children":915},{"class":63,"line":914},26,[916,921],{"type":23,"tag":61,"props":917,"children":918},{"style":68},[919],{"type":33,"value":920},"    volumes",{"type":23,"tag":61,"props":922,"children":923},{"style":74},[924],{"type":33,"value":77},{"type":23,"tag":61,"props":926,"children":928},{"class":63,"line":927},27,[929,933],{"type":23,"tag":61,"props":930,"children":931},{"style":74},[932],{"type":33,"value":133},{"type":23,"tag":61,"props":934,"children":935},{"style":107},[936],{"type":33,"value":937},"/var/run/docker.sock:/var/run/docker.sock:ro\n",{"type":23,"tag":61,"props":939,"children":941},{"class":63,"line":940},28,[942,946],{"type":23,"tag":61,"props":943,"children":944},{"style":74},[945],{"type":33,"value":133},{"type":23,"tag":61,"props":947,"children":948},{"style":107},[949],{"type":33,"value":950},"/letsencrypt:/letsencrypt\n",{"type":23,"tag":24,"props":952,"children":953},{},[954],{"type":33,"value":955},"Erklären wir das ein wenig:",{"type":23,"tag":354,"props":957,"children":958},{},[959,972,977,982,987],{"type":23,"tag":201,"props":960,"children":961},{},[962,964,970],{"type":33,"value":963},"Wir konfigurieren einen ",{"type":23,"tag":28,"props":965,"children":967},{"href":966},"https://letsencrypt.org/",[968],{"type":33,"value":969},"Let's Encrypt",{"type":33,"value":971}," Certificates Resolver (11-14)",{"type":23,"tag":201,"props":973,"children":974},{},[975],{"type":33,"value":976},"Wir hören auf Port 80 und 443 (16-17)",{"type":23,"tag":201,"props":978,"children":979},{},[980],{"type":33,"value":981},"Wir leiten den gesamten HTTP-Verkehr auf HTTPS um (19-20)",{"type":23,"tag":201,"props":983,"children":984},{},[985],{"type":33,"value":986},"Und binden den konfigurierten Certificates Resolver daran (21)",{"type":23,"tag":201,"props":988,"children":989},{},[990],{"type":33,"value":991},"Wir richten den Docker-Provider ein (23-25)",{"type":23,"tag":993,"props":994,"children":996},"h3",{"id":995},"erklärung-für-die-zeilen-24-25",[997],{"type":33,"value":998},"Erklärung für die Zeilen 24-25",{"type":23,"tag":43,"props":1000,"children":1002},{"code":1001},"--providers.docker.defaultrule=Host(`{{ trimPrefix 'app-'.Name }}.example.com`)\n",[1003],{"type":23,"tag":57,"props":1004,"children":1005},{"__ignoreMap":7},[1006],{"type":33,"value":1001},{"type":23,"tag":197,"props":1008,"children":1009},{},[1010,1044],{"type":23,"tag":201,"props":1011,"children":1012},{},[1013,1019,1021,1027,1029,1034,1036,1042],{"type":23,"tag":57,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":33,"value":1018},".Name",{"type":33,"value":1020}," wird automatisch als ",{"type":23,"tag":57,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":33,"value":1026},"\u003Cservice-name>-\u003Cstack_name>",{"type":33,"value":1028}," generiert. Für dein ",{"type":23,"tag":57,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":33,"value":209},{"type":33,"value":1035},"-Beispiel wäre das also ",{"type":23,"tag":57,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":33,"value":1041},"app-whoami",{"type":33,"value":1043},".",{"type":23,"tag":201,"props":1045,"children":1046},{},[1047,1053,1055,1060],{"type":23,"tag":57,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":33,"value":1052},"trimPrefix 'app-'.Name",{"type":33,"value":1054}," ergibt ",{"type":23,"tag":57,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":33,"value":209},{"type":33,"value":1043},{"type":23,"tag":1062,"props":1063,"children":1064},"br",{},[],{"type":23,"tag":43,"props":1066,"children":1067},{"code":911},[1068],{"type":23,"tag":57,"props":1069,"children":1070},{"__ignoreMap":7},[1071],{"type":33,"value":911},{"type":23,"tag":24,"props":1073,"children":1074},{},[1075,1077,1082,1084,1090,1092,1098],{"type":33,"value":1076},"Alle Dienste sollten standardmäßig verfügbar sein, aber sie sollten gefiltert werden, sodass nur ",{"type":23,"tag":57,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":33,"value":517},{"type":33,"value":1083},"-Dienste berücksichtigt werden. Das Label ",{"type":23,"tag":57,"props":1085,"children":1087},{"className":1086},[],[1088],{"type":33,"value":1089},"com.docker.compose.service",{"type":33,"value":1091}," wird von ",{"type":23,"tag":57,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":33,"value":1097},"docker-compose",{"type":33,"value":1099}," automatisch zu allen Containern hinzugefügt.",{"type":23,"tag":272,"props":1101,"children":1103},{"id":1102},"bonus-konfiguration",[1104],{"type":33,"value":1105},"Bonus-Konfiguration",{"type":23,"tag":24,"props":1107,"children":1108},{},[1109],{"type":33,"value":1110},"Wir können diese Konfiguration noch weiter verfeinern.",{"type":23,"tag":993,"props":1112,"children":1114},{"id":1113},"andere-dienste-im-stack-verfügbar-machen",[1115],{"type":33,"value":1116},"Andere Dienste im Stack verfügbar machen",{"type":23,"tag":24,"props":1118,"children":1119},{},[1120],{"type":33,"value":1121},"Manchmal möchte man mehr als nur den App-Container nach außen hin öffnen.",{"type":23,"tag":24,"props":1123,"children":1124},{},[1125,1127,1132],{"type":33,"value":1126},"Die aktuelle Konfiguration leitet den Datenverkehr nur an unsere ",{"type":23,"tag":57,"props":1128,"children":1130},{"className":1129},[],[1131],{"type":33,"value":517},{"type":33,"value":1133},"-Dienste weiter.\nUm weiterhin die Standard-Konfigurationsmethode nutzen zu können, müssen wir diese wieder aktivieren:",{"type":23,"tag":43,"props":1135,"children":1137},{"code":1136},"--providers.docker.constraints=Label(`com.docker.compose.service`,`app`) || Label(`traefik.enable`, `true`)\n",[1138],{"type":23,"tag":57,"props":1139,"children":1140},{"__ignoreMap":7},[1141],{"type":33,"value":1136},{"type":23,"tag":993,"props":1143,"children":1145},{"id":1144},"stack-name-weicht-vom-verzeichnisnamen-ab",[1146],{"type":33,"value":1147},"Stack-Name weicht vom Verzeichnisnamen ab",{"type":23,"tag":24,"props":1149,"children":1150},{},[1151,1153,1158],{"type":33,"value":1152},"Beim Deployment der Stacks wird der Name basierend auf dem Verzeichnisnamen generiert, in dem sich die ",{"type":23,"tag":57,"props":1154,"children":1156},{"className":1155},[],[1157],{"type":33,"value":350},{"type":33,"value":1159}," Datei befindet.\nWir können den Namen auf verschiedene Arten ändern, aber hier ist die einfachste:",{"type":23,"tag":43,"props":1161,"children":1165},{"code":1162,"filename":1163,"highlights":1164,"language":53,"meta":7,"className":54,"style":7},"name: whoami # Projektname manuell setzen\nservices:\n  app:\n    image: traefik/whoami\n","whoami-example/docker-compose.yaml",[64],[1166],{"type":23,"tag":57,"props":1167,"children":1168},{"__ignoreMap":7},[1169,1192,1203,1214],{"type":23,"tag":61,"props":1170,"children":1172},{"class":1171,"line":64},[63,127],[1173,1178,1182,1186],{"type":23,"tag":61,"props":1174,"children":1175},{"style":68},[1176],{"type":33,"value":1177},"name",{"type":23,"tag":61,"props":1179,"children":1180},{"style":74},[1181],{"type":33,"value":104},{"type":23,"tag":61,"props":1183,"children":1184},{"style":107},[1185],{"type":33,"value":209},{"type":23,"tag":61,"props":1187,"children":1189},{"style":1188},"--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F",[1190],{"type":33,"value":1191}," # Projektname manuell setzen\n",{"type":23,"tag":61,"props":1193,"children":1194},{"class":63,"line":80},[1195,1199],{"type":23,"tag":61,"props":1196,"children":1197},{"style":68},[1198],{"type":33,"value":71},{"type":23,"tag":61,"props":1200,"children":1201},{"style":74},[1202],{"type":33,"value":77},{"type":23,"tag":61,"props":1204,"children":1205},{"class":63,"line":93},[1206,1210],{"type":23,"tag":61,"props":1207,"children":1208},{"style":68},[1209],{"type":33,"value":557},{"type":23,"tag":61,"props":1211,"children":1212},{"style":74},[1213],{"type":33,"value":77},{"type":23,"tag":61,"props":1215,"children":1216},{"class":63,"line":113},[1217,1221,1225],{"type":23,"tag":61,"props":1218,"children":1219},{"style":68},[1220],{"type":33,"value":99},{"type":23,"tag":61,"props":1222,"children":1223},{"style":74},[1224],{"type":33,"value":104},{"type":23,"tag":61,"props":1226,"children":1227},{"style":107},[1228],{"type":33,"value":110},{"type":23,"tag":1230,"props":1231,"children":1232},"style",{},[1233],{"type":33,"value":1234},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":7,"searchDepth":80,"depth":80,"links":1236},[1237,1238,1241],{"id":274,"depth":80,"text":277},{"id":374,"depth":80,"text":377,"children":1239},[1240],{"id":995,"depth":93,"text":998},{"id":1102,"depth":80,"text":1105,"children":1242},[1243,1244],{"id":1113,"depth":93,"text":1116},{"id":1144,"depth":93,"text":1147},"markdown","common:blog:21.traefik-magic.md","common","blog/21.traefik-magic.md","blog/21.traefik-magic","md",{"_path":1252,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1253,"description":1254,"author":10,"image":11,"releaseDate":1255,"blogCategories":1256,"articleTags":1257,"tags":1260,"_type":1245,"_id":1262,"_source":1247,"_file":1263,"_stem":1264,"_extension":1250},"/blog/shopware-plugin-gitlab-pipeline-release","Testen, Bauen, und Veröffentlichen von Shopware 6 Plugin mit GitLab CI - Teil 1: Veröffentlichen","Teil 1: Veröffentlichen - Verwendung von GitLab zum Testen, Bauen und Veröffentlichen eines Shopware 6 Plugins","2026-02-26",[14,15],[15,1258,1259],"Open Source","Shopware",[1261,18],"shopware","common:blog:18.shopware-plugin-gitlab-pipeline-release.md","blog/18.shopware-plugin-gitlab-pipeline-release.md","blog/18.shopware-plugin-gitlab-pipeline-release",{},{"_path":4},{"_path":1268},"/en/blog/traefik-magic",{"_path":1270,"_dir":1271,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":1272,"primaryTeam":1274,"firstName":1275,"lastName":1276,"prefixTitle":7,"suffixTitle":1277,"education":1278,"role":1283,"workingSince":1288,"inTheCompanySince":1289,"techSkills":1290,"skills":1329,"projects":1347,"contactDetails":1357,"_image":1361,"image":1362,"_id":1363,"_type":1364,"title":1365,"_source":1271,"_file":1366,"_stem":1367,"_extension":1364},"/employees/robert-juzak","employees",[1273,1274],"appDev","devOps","Robert","Juzak","B.Sc.",[1279],[1280,1281,1282],"Bachelor of Computer Science","Technische Universität Breslau","2016",[1284,1285,1286,1287],"softwareDeveloper","fullstackDeveloper","admin","consultant","2015","2018",[1291,1295,1297,1300,1303,1306,1308,1311,1314,1318,1321,1323,1326],{"name":1292,"level":1293,"icon":1294},"Docker","expert","/images/Docker.svg",{"name":1296,"level":1293},"GitLab",{"name":1298,"level":1293,"icon":1299},"Kubernetes","/images/Kubernetes.svg",{"name":1301,"level":1293,"icon":1302},"PHPUnit","/images/PHP-Unit.svg",{"name":1304,"level":1293,"icon":1305},"Portainer","/images/Portainer.svg",{"name":1307,"level":1293},"Sentry",{"name":1309,"level":1293,"icon":1310},"Sonarqube","/images/Sonarqube.svg",{"name":1312,"level":1293,"icon":1313},"Linux","/images/linux_os-mono.svg",{"name":1315,"level":1316,"icon":1317},"CSS","advanced","/images/css.svg",{"name":1319,"level":1316,"icon":1320},"HTML","/images/html.svg",{"name":1322,"level":1316},"PHP",{"name":1324,"level":1316,"icon":1325},"SQL","/images/SQL.svg",{"name":1327,"level":1316,"icon":1328},"VueJS","/images/vuejs.svg",[1330,1332,1334,1335,1337,1339,1341,1343,1345],{"name":1331,"level":1293},"CI/CD",{"name":1333,"level":1293},"qualityAssurance",{"name":1274,"level":1293},{"name":1336,"level":1293},"testDrivenBugfix",{"name":1338,"level":1293},"testDrivenDevelopment",{"name":1340,"level":1316},"accessibility",{"name":1342,"level":1316},"databases",{"name":1344,"level":1316},"linuxServerAdministration",{"name":1346,"level":1316},"softwareArchitect",[1348,1353,1355],{"project":1349,"position":1350},"Herole",[1351,1352],"Dev-Ops","Frontend Developer",{"project":1354,"position":1352},"Huawei-Calibration-aaS",{"project":1356,"position":1352},"Huawei-Inspect-3D",{"eMail":1358,"phone":1359,"visibility":1360},"robert.juzak@helmundwalter.de","+49 351 799 035 26","1","images/employees/Portraits/robert_juzak.webp","images/employees/Portraits/RobertJuzak_MS.webp","employees:employees:6.robert-juzak.json","json","Robert Juzak","employees/6.robert-juzak.json","employees/6.robert-juzak",[1369,1382],{"_path":1370,"_dir":1371,"_draft":6,"_partial":787,"_locale":7,"name":1372,"slug":1371,"text":1373,"hoverText":1374,"image":1375,"customer":1372,"tags":1376,"_id":1378,"_type":53,"title":1379,"_source":1247,"_file":1380,"_stem":1381,"_extension":53},"/portfolio/pixelx/_teaser","pixelx","PixelX","IT-Sicherheit mit Augenmaß und Sachverstand","Für PixelX haben wir eine gezielte Sicherheitsanalyse durchgeführt, bei der wir dank unseres tiefen technischen Verständnisses eine kritische Schwachstelle identifizieren konnten. Mit minimalem Zeitaufwand erzielten wir maximalen Sicherheitsgewinn.","/images/portfolio/pixelx/pixelx_secured.png",[1377,18],"security","common:portfolio:9010.pixelx:_teaser.yaml","Teaser","portfolio/9010.pixelx/_teaser.yaml","portfolio/9010.pixelx/_teaser",{"_path":1383,"_dir":1384,"_draft":6,"_partial":787,"_locale":7,"name":1385,"slug":1384,"text":1386,"hoverText":1387,"image":1388,"customer":1385,"tags":1389,"_id":1390,"_type":53,"title":1379,"_source":1247,"_file":1391,"_stem":1392,"_extension":53},"/portfolio/slimspots/_teaser","slimspots","SlimSpots","Große Datenmengen in Echtzeit verarbeiten","Für SlimSpots, einen weltweit agierenden Anbieter von Ad-Marketing-Lösungen, haben wir eine hochskalierbare Infrastruktur entwickelt, die die Verarbeitung von Billionen Datensätzen in Echtzeit ermöglicht.","/images/portfolio/slimspots/slim_spots_prtfolio.png",[1342,18],"common:portfolio:9020.slimspots:_teaser.yaml","portfolio/9020.slimspots/_teaser.yaml","portfolio/9020.slimspots/_teaser",{"_path":1252,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1253,"description":1254,"author":10,"image":11,"releaseDate":1255,"blogCategories":1394,"articleTags":1395,"tags":1396,"body":1397,"_type":1245,"_id":1262,"_source":1247,"_file":1263,"_stem":1264,"_extension":1250},[14,15],[15,1258,1259],[1261,18],{"type":20,"children":1398,"toc":5790},[1399,1407,1412,1424,1429,1434,1470,1475,1481,1486,1492,1505,2556,2561,2588,2598,2601,2614,2637,2772,2784,2789,2795,2807,2828,3230,3271,3276,3297,3439,3451,3457,3469,3474,3486,3521,3526,4453,4458,4557,4562,4621,4632,4637,4658,4793,4803,4809,4829,4832,4835,4841,4847,4852,4870,4920,5076,5082,5087,5098,5111,5334,5739,5744,5786],{"type":23,"tag":1400,"props":1401,"children":1406},"img",{"alt":7,"aspect-ratio":1402,"height":1403,"object-fit":1404,"src":1405},"1.78",300,"fill","/blog/shopware-plugin-release.png",[],{"type":23,"tag":24,"props":1408,"children":1409},{},[1410],{"type":33,"value":1411},"Es gibt viele Möglichkeiten, Shopware 6 Plugins zu installieren. Sie können sie direkt im Admin-Panel herunterladen oder mit Composer installieren.",{"type":23,"tag":24,"props":1413,"children":1414},{},[1415,1417,1423],{"type":33,"value":1416},"Einen detaillierten Vergleich finden Sie in der ",{"type":23,"tag":28,"props":1418,"children":1420},{"href":1419},"https://developer.shopware.com/docs/guides/plugins/plugins/",[1421],{"type":33,"value":1422},"offiziellen Dokumentation",{"type":33,"value":1043},{"type":23,"tag":24,"props":1425,"children":1426},{},[1427],{"type":33,"value":1428},"Als Entwickler und Betreuer von Themes, Anpassungen, Drittanbieter-APIs usw. konzentriere ich mich auf statische Plugins.",{"type":23,"tag":24,"props":1430,"children":1431},{},[1432],{"type":33,"value":1433},"Der Workflow ist einfach:",{"type":23,"tag":354,"props":1435,"children":1436},{},[1437,1448,1459],{"type":23,"tag":201,"props":1438,"children":1439},{},[1440,1442],{"type":33,"value":1441},"Erstelle ein Plugin mit ",{"type":23,"tag":57,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":33,"value":1447},"bin/console plugin:create --static",{"type":23,"tag":201,"props":1449,"children":1450},{},[1451,1453],{"type":33,"value":1452},"Installiere es mit ",{"type":23,"tag":28,"props":1454,"children":1456},{"href":1455},"https://developer.shopware.com/docs/guides/plugins/plugins/#static-plugins",[1457],{"type":33,"value":1458},"Composer",{"type":23,"tag":201,"props":1460,"children":1461},{},[1462,1464],{"type":33,"value":1463},"Baue das Projekt mit ",{"type":23,"tag":28,"props":1465,"children":1467},{"href":1466},"https://developer.shopware.com/docs/products/cli/project-commands/build.html#example-docker-image",[1468],{"type":33,"value":1469},"shopware-cli",{"type":23,"tag":24,"props":1471,"children":1472},{},[1473],{"type":33,"value":1474},"Wenn wir dasselbe Plugin in mehr als einem Shop benötigen, könnten wir dasselbe Plugin mehrfach erstellen, das wäre aber für die Wartung nicht optimal.",{"type":23,"tag":272,"props":1476,"children":1478},{"id":1477},"das-plugin-extrahieren",[1479],{"type":33,"value":1480},"Das Plugin extrahieren",{"type":23,"tag":24,"props":1482,"children":1483},{},[1484],{"type":33,"value":1485},"Wir fangen damit an, dass wir den Quellcode unseres Plugins in ein separates Repository verschieben. Um die Sache vorerst einfach zu machen, machen wir das Repository öffentlich.",{"type":23,"tag":993,"props":1487,"children":1489},{"id":1488},"download-mit-git",[1490],{"type":33,"value":1491},"Download mit Git",{"type":23,"tag":24,"props":1493,"children":1494},{},[1495,1497,1503],{"type":33,"value":1496},"Wir müssen ",{"type":23,"tag":57,"props":1498,"children":1500},{"className":1499},[],[1501],{"type":33,"value":1502},"composer",{"type":33,"value":1504}," nur mitteilen, wo unser Plugin zu finden ist.",{"type":23,"tag":43,"props":1506,"children":1515},{"className":1507,"code":1508,"filename":1509,"highlights":1510,"language":1364,"meta":7,"style":7},"language-json shiki shiki-themes github-dark github-dark monokai","{\n  \"name\": \"shopware/production\",\n  \"license\": \"MIT\",\n  \"type\": \"project\",\n  \"require\": {\n    \"composer-runtime-api\": \"^2.0\",\n    \"acme/sample-plugin\": \"^1.0\",\n    \"shopware/administration\": \"*\",\n    \"shopware/core\": \"6.6.10.2\",\n    \"shopware/elasticsearch\": \"*\",\n    \"shopware/storefront\": \"*\",\n    \"symfony/flex\": \"~2\"\n  },\n  \"repositories\": [\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*/packages/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/static-plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"git\",\n      \"url\": \"https://\u003CDOMAIN-NAME>/\u003Cgroup>/\u003Crepo>.git\"\n    }\n  ],\n  \"autoload\": {\n    \"psr-4\": {\n      \"App\\\\\": \"src/\"\n    }\n  },\n  \"prefer-stable\": true,\n  \"config\": {\n    \"allow-plugins\": {\n      \"symfony/flex\": true,\n      \"symfony/runtime\": true\n    },\n    \"optimize-autoloader\": true,\n    \"sort-packages\": true\n  },\n  \"scripts\": {\n    \"auto-scripts\": {\n      \"assets:install\": \"symfony-cmd\"\n    },\n    \"post-install-cmd\": [\n      \"@auto-scripts\"\n    ],\n    \"post-update-cmd\": [\n      \"@auto-scripts\"\n    ]\n  },\n  \"extra\": {\n    \"symfony\": {\n      \"allow-contrib\": true,\n      \"endpoint\": [\n        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\",\n        \"flex://defaults\"\n      ]\n    }\n  }\n}\n","\u003Cproject-root>/composer.json",[1511,1512,1513,1514],36,37,38,39,[1516],{"type":23,"tag":57,"props":1517,"children":1518},{"__ignoreMap":7},[1519,1527,1551,1572,1593,1606,1627,1648,1669,1690,1710,1730,1747,1755,1768,1776,1797,1818,1830,1848,1856,1864,1871,1890,1910,1921,1936,1943,1950,1958,1978,1999,2011,2027,2035,2043,2051,2072,2089,2098,2107,2120,2133,2162,2170,2178,2200,2213,2226,2247,2264,2272,2293,2310,2318,2331,2344,2362,2370,2383,2392,2401,2414,2422,2431,2439,2452,2465,2486,2499,2512,2521,2530,2538,2547],{"type":23,"tag":61,"props":1520,"children":1521},{"class":63,"line":64},[1522],{"type":23,"tag":61,"props":1523,"children":1524},{"style":74},[1525],{"type":33,"value":1526},"{\n",{"type":23,"tag":61,"props":1528,"children":1529},{"class":63,"line":80},[1530,1536,1540,1546],{"type":23,"tag":61,"props":1531,"children":1533},{"style":1532},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic",[1534],{"type":33,"value":1535},"  \"name\"",{"type":23,"tag":61,"props":1537,"children":1538},{"style":74},[1539],{"type":33,"value":104},{"type":23,"tag":61,"props":1541,"children":1543},{"style":1542},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2",[1544],{"type":33,"value":1545},"\"shopware/production\"",{"type":23,"tag":61,"props":1547,"children":1548},{"style":74},[1549],{"type":33,"value":1550},",\n",{"type":23,"tag":61,"props":1552,"children":1553},{"class":63,"line":93},[1554,1559,1563,1568],{"type":23,"tag":61,"props":1555,"children":1556},{"style":1532},[1557],{"type":33,"value":1558},"  \"license\"",{"type":23,"tag":61,"props":1560,"children":1561},{"style":74},[1562],{"type":33,"value":104},{"type":23,"tag":61,"props":1564,"children":1565},{"style":1542},[1566],{"type":33,"value":1567},"\"MIT\"",{"type":23,"tag":61,"props":1569,"children":1570},{"style":74},[1571],{"type":33,"value":1550},{"type":23,"tag":61,"props":1573,"children":1574},{"class":63,"line":113},[1575,1580,1584,1589],{"type":23,"tag":61,"props":1576,"children":1577},{"style":1532},[1578],{"type":33,"value":1579},"  \"type\"",{"type":23,"tag":61,"props":1581,"children":1582},{"style":74},[1583],{"type":33,"value":104},{"type":23,"tag":61,"props":1585,"children":1586},{"style":1542},[1587],{"type":33,"value":1588},"\"project\"",{"type":23,"tag":61,"props":1590,"children":1591},{"style":74},[1592],{"type":33,"value":1550},{"type":23,"tag":61,"props":1594,"children":1595},{"class":63,"line":48},[1596,1601],{"type":23,"tag":61,"props":1597,"children":1598},{"style":1532},[1599],{"type":33,"value":1600},"  \"require\"",{"type":23,"tag":61,"props":1602,"children":1603},{"style":74},[1604],{"type":33,"value":1605},": {\n",{"type":23,"tag":61,"props":1607,"children":1608},{"class":63,"line":49},[1609,1614,1618,1623],{"type":23,"tag":61,"props":1610,"children":1611},{"style":1532},[1612],{"type":33,"value":1613},"    \"composer-runtime-api\"",{"type":23,"tag":61,"props":1615,"children":1616},{"style":74},[1617],{"type":33,"value":104},{"type":23,"tag":61,"props":1619,"children":1620},{"style":1542},[1621],{"type":33,"value":1622},"\"^2.0\"",{"type":23,"tag":61,"props":1624,"children":1625},{"style":74},[1626],{"type":33,"value":1550},{"type":23,"tag":61,"props":1628,"children":1629},{"class":63,"line":50},[1630,1635,1639,1644],{"type":23,"tag":61,"props":1631,"children":1632},{"style":1532},[1633],{"type":33,"value":1634},"    \"acme/sample-plugin\"",{"type":23,"tag":61,"props":1636,"children":1637},{"style":74},[1638],{"type":33,"value":104},{"type":23,"tag":61,"props":1640,"children":1641},{"style":1542},[1642],{"type":33,"value":1643},"\"^1.0\"",{"type":23,"tag":61,"props":1645,"children":1646},{"style":74},[1647],{"type":33,"value":1550},{"type":23,"tag":61,"props":1649,"children":1650},{"class":63,"line":51},[1651,1656,1660,1665],{"type":23,"tag":61,"props":1652,"children":1653},{"style":1532},[1654],{"type":33,"value":1655},"    \"shopware/administration\"",{"type":23,"tag":61,"props":1657,"children":1658},{"style":74},[1659],{"type":33,"value":104},{"type":23,"tag":61,"props":1661,"children":1662},{"style":1542},[1663],{"type":33,"value":1664},"\"*\"",{"type":23,"tag":61,"props":1666,"children":1667},{"style":74},[1668],{"type":33,"value":1550},{"type":23,"tag":61,"props":1670,"children":1671},{"class":63,"line":52},[1672,1677,1681,1686],{"type":23,"tag":61,"props":1673,"children":1674},{"style":1532},[1675],{"type":33,"value":1676},"    \"shopware/core\"",{"type":23,"tag":61,"props":1678,"children":1679},{"style":74},[1680],{"type":33,"value":104},{"type":23,"tag":61,"props":1682,"children":1683},{"style":1542},[1684],{"type":33,"value":1685},"\"6.6.10.2\"",{"type":23,"tag":61,"props":1687,"children":1688},{"style":74},[1689],{"type":33,"value":1550},{"type":23,"tag":61,"props":1691,"children":1692},{"class":63,"line":718},[1693,1698,1702,1706],{"type":23,"tag":61,"props":1694,"children":1695},{"style":1532},[1696],{"type":33,"value":1697},"    \"shopware/elasticsearch\"",{"type":23,"tag":61,"props":1699,"children":1700},{"style":74},[1701],{"type":33,"value":104},{"type":23,"tag":61,"props":1703,"children":1704},{"style":1542},[1705],{"type":33,"value":1664},{"type":23,"tag":61,"props":1707,"children":1708},{"style":74},[1709],{"type":33,"value":1550},{"type":23,"tag":61,"props":1711,"children":1712},{"class":63,"line":731},[1713,1718,1722,1726],{"type":23,"tag":61,"props":1714,"children":1715},{"style":1532},[1716],{"type":33,"value":1717},"    \"shopware/storefront\"",{"type":23,"tag":61,"props":1719,"children":1720},{"style":74},[1721],{"type":33,"value":104},{"type":23,"tag":61,"props":1723,"children":1724},{"style":1542},[1725],{"type":33,"value":1664},{"type":23,"tag":61,"props":1727,"children":1728},{"style":74},[1729],{"type":33,"value":1550},{"type":23,"tag":61,"props":1731,"children":1732},{"class":63,"line":744},[1733,1738,1742],{"type":23,"tag":61,"props":1734,"children":1735},{"style":1532},[1736],{"type":33,"value":1737},"    \"symfony/flex\"",{"type":23,"tag":61,"props":1739,"children":1740},{"style":74},[1741],{"type":33,"value":104},{"type":23,"tag":61,"props":1743,"children":1744},{"style":1542},[1745],{"type":33,"value":1746},"\"~2\"\n",{"type":23,"tag":61,"props":1748,"children":1749},{"class":63,"line":757},[1750],{"type":23,"tag":61,"props":1751,"children":1752},{"style":74},[1753],{"type":33,"value":1754},"  },\n",{"type":23,"tag":61,"props":1756,"children":1757},{"class":63,"line":770},[1758,1763],{"type":23,"tag":61,"props":1759,"children":1760},{"style":1532},[1761],{"type":33,"value":1762},"  \"repositories\"",{"type":23,"tag":61,"props":1764,"children":1765},{"style":74},[1766],{"type":33,"value":1767},": [\n",{"type":23,"tag":61,"props":1769,"children":1770},{"class":63,"line":783},[1771],{"type":23,"tag":61,"props":1772,"children":1773},{"style":74},[1774],{"type":33,"value":1775},"    {\n",{"type":23,"tag":61,"props":1777,"children":1778},{"class":63,"line":793},[1779,1784,1788,1793],{"type":23,"tag":61,"props":1780,"children":1781},{"style":1532},[1782],{"type":33,"value":1783},"      \"type\"",{"type":23,"tag":61,"props":1785,"children":1786},{"style":74},[1787],{"type":33,"value":104},{"type":23,"tag":61,"props":1789,"children":1790},{"style":1542},[1791],{"type":33,"value":1792},"\"path\"",{"type":23,"tag":61,"props":1794,"children":1795},{"style":74},[1796],{"type":33,"value":1550},{"type":23,"tag":61,"props":1798,"children":1799},{"class":63,"line":806},[1800,1805,1809,1814],{"type":23,"tag":61,"props":1801,"children":1802},{"style":1532},[1803],{"type":33,"value":1804},"      \"url\"",{"type":23,"tag":61,"props":1806,"children":1807},{"style":74},[1808],{"type":33,"value":104},{"type":23,"tag":61,"props":1810,"children":1811},{"style":1542},[1812],{"type":33,"value":1813},"\"custom/plugins/*\"",{"type":23,"tag":61,"props":1815,"children":1816},{"style":74},[1817],{"type":33,"value":1550},{"type":23,"tag":61,"props":1819,"children":1820},{"class":63,"line":819},[1821,1826],{"type":23,"tag":61,"props":1822,"children":1823},{"style":1532},[1824],{"type":33,"value":1825},"      \"options\"",{"type":23,"tag":61,"props":1827,"children":1828},{"style":74},[1829],{"type":33,"value":1605},{"type":23,"tag":61,"props":1831,"children":1832},{"class":63,"line":828},[1833,1838,1842],{"type":23,"tag":61,"props":1834,"children":1835},{"style":1532},[1836],{"type":33,"value":1837},"        \"symlink\"",{"type":23,"tag":61,"props":1839,"children":1840},{"style":74},[1841],{"type":33,"value":104},{"type":23,"tag":61,"props":1843,"children":1845},{"style":1844},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[1846],{"type":33,"value":1847},"true\n",{"type":23,"tag":61,"props":1849,"children":1850},{"class":63,"line":841},[1851],{"type":23,"tag":61,"props":1852,"children":1853},{"style":74},[1854],{"type":33,"value":1855},"      }\n",{"type":23,"tag":61,"props":1857,"children":1858},{"class":63,"line":854},[1859],{"type":23,"tag":61,"props":1860,"children":1861},{"style":74},[1862],{"type":33,"value":1863},"    },\n",{"type":23,"tag":61,"props":1865,"children":1866},{"class":63,"line":867},[1867],{"type":23,"tag":61,"props":1868,"children":1869},{"style":74},[1870],{"type":33,"value":1775},{"type":23,"tag":61,"props":1872,"children":1873},{"class":63,"line":875},[1874,1878,1882,1886],{"type":23,"tag":61,"props":1875,"children":1876},{"style":1532},[1877],{"type":33,"value":1783},{"type":23,"tag":61,"props":1879,"children":1880},{"style":74},[1881],{"type":33,"value":104},{"type":23,"tag":61,"props":1883,"children":1884},{"style":1542},[1885],{"type":33,"value":1792},{"type":23,"tag":61,"props":1887,"children":1888},{"style":74},[1889],{"type":33,"value":1550},{"type":23,"tag":61,"props":1891,"children":1892},{"class":63,"line":888},[1893,1897,1901,1906],{"type":23,"tag":61,"props":1894,"children":1895},{"style":1532},[1896],{"type":33,"value":1804},{"type":23,"tag":61,"props":1898,"children":1899},{"style":74},[1900],{"type":33,"value":104},{"type":23,"tag":61,"props":1902,"children":1903},{"style":1542},[1904],{"type":33,"value":1905},"\"custom/plugins/*/packages/*\"",{"type":23,"tag":61,"props":1907,"children":1908},{"style":74},[1909],{"type":33,"value":1550},{"type":23,"tag":61,"props":1911,"children":1912},{"class":63,"line":901},[1913,1917],{"type":23,"tag":61,"props":1914,"children":1915},{"style":1532},[1916],{"type":33,"value":1825},{"type":23,"tag":61,"props":1918,"children":1919},{"style":74},[1920],{"type":33,"value":1605},{"type":23,"tag":61,"props":1922,"children":1923},{"class":63,"line":914},[1924,1928,1932],{"type":23,"tag":61,"props":1925,"children":1926},{"style":1532},[1927],{"type":33,"value":1837},{"type":23,"tag":61,"props":1929,"children":1930},{"style":74},[1931],{"type":33,"value":104},{"type":23,"tag":61,"props":1933,"children":1934},{"style":1844},[1935],{"type":33,"value":1847},{"type":23,"tag":61,"props":1937,"children":1938},{"class":63,"line":927},[1939],{"type":23,"tag":61,"props":1940,"children":1941},{"style":74},[1942],{"type":33,"value":1855},{"type":23,"tag":61,"props":1944,"children":1945},{"class":63,"line":940},[1946],{"type":23,"tag":61,"props":1947,"children":1948},{"style":74},[1949],{"type":33,"value":1863},{"type":23,"tag":61,"props":1951,"children":1953},{"class":63,"line":1952},29,[1954],{"type":23,"tag":61,"props":1955,"children":1956},{"style":74},[1957],{"type":33,"value":1775},{"type":23,"tag":61,"props":1959,"children":1961},{"class":63,"line":1960},30,[1962,1966,1970,1974],{"type":23,"tag":61,"props":1963,"children":1964},{"style":1532},[1965],{"type":33,"value":1783},{"type":23,"tag":61,"props":1967,"children":1968},{"style":74},[1969],{"type":33,"value":104},{"type":23,"tag":61,"props":1971,"children":1972},{"style":1542},[1973],{"type":33,"value":1792},{"type":23,"tag":61,"props":1975,"children":1976},{"style":74},[1977],{"type":33,"value":1550},{"type":23,"tag":61,"props":1979,"children":1981},{"class":63,"line":1980},31,[1982,1986,1990,1995],{"type":23,"tag":61,"props":1983,"children":1984},{"style":1532},[1985],{"type":33,"value":1804},{"type":23,"tag":61,"props":1987,"children":1988},{"style":74},[1989],{"type":33,"value":104},{"type":23,"tag":61,"props":1991,"children":1992},{"style":1542},[1993],{"type":33,"value":1994},"\"custom/static-plugins/*\"",{"type":23,"tag":61,"props":1996,"children":1997},{"style":74},[1998],{"type":33,"value":1550},{"type":23,"tag":61,"props":2000,"children":2002},{"class":63,"line":2001},32,[2003,2007],{"type":23,"tag":61,"props":2004,"children":2005},{"style":1532},[2006],{"type":33,"value":1825},{"type":23,"tag":61,"props":2008,"children":2009},{"style":74},[2010],{"type":33,"value":1605},{"type":23,"tag":61,"props":2012,"children":2014},{"class":63,"line":2013},33,[2015,2019,2023],{"type":23,"tag":61,"props":2016,"children":2017},{"style":1532},[2018],{"type":33,"value":1837},{"type":23,"tag":61,"props":2020,"children":2021},{"style":74},[2022],{"type":33,"value":104},{"type":23,"tag":61,"props":2024,"children":2025},{"style":1844},[2026],{"type":33,"value":1847},{"type":23,"tag":61,"props":2028,"children":2030},{"class":63,"line":2029},34,[2031],{"type":23,"tag":61,"props":2032,"children":2033},{"style":74},[2034],{"type":33,"value":1855},{"type":23,"tag":61,"props":2036,"children":2038},{"class":63,"line":2037},35,[2039],{"type":23,"tag":61,"props":2040,"children":2041},{"style":74},[2042],{"type":33,"value":1863},{"type":23,"tag":61,"props":2044,"children":2046},{"class":2045,"line":1511},[63,127],[2047],{"type":23,"tag":61,"props":2048,"children":2049},{"style":74},[2050],{"type":33,"value":1775},{"type":23,"tag":61,"props":2052,"children":2054},{"class":2053,"line":1512},[63,127],[2055,2059,2063,2068],{"type":23,"tag":61,"props":2056,"children":2057},{"style":1532},[2058],{"type":33,"value":1783},{"type":23,"tag":61,"props":2060,"children":2061},{"style":74},[2062],{"type":33,"value":104},{"type":23,"tag":61,"props":2064,"children":2065},{"style":1542},[2066],{"type":33,"value":2067},"\"git\"",{"type":23,"tag":61,"props":2069,"children":2070},{"style":74},[2071],{"type":33,"value":1550},{"type":23,"tag":61,"props":2073,"children":2075},{"class":2074,"line":1513},[63,127],[2076,2080,2084],{"type":23,"tag":61,"props":2077,"children":2078},{"style":1532},[2079],{"type":33,"value":1804},{"type":23,"tag":61,"props":2081,"children":2082},{"style":74},[2083],{"type":33,"value":104},{"type":23,"tag":61,"props":2085,"children":2086},{"style":1542},[2087],{"type":33,"value":2088},"\"https://\u003CDOMAIN-NAME>/\u003Cgroup>/\u003Crepo>.git\"\n",{"type":23,"tag":61,"props":2090,"children":2092},{"class":2091,"line":1514},[63,127],[2093],{"type":23,"tag":61,"props":2094,"children":2095},{"style":74},[2096],{"type":33,"value":2097},"    }\n",{"type":23,"tag":61,"props":2099,"children":2101},{"class":63,"line":2100},40,[2102],{"type":23,"tag":61,"props":2103,"children":2104},{"style":74},[2105],{"type":33,"value":2106},"  ],\n",{"type":23,"tag":61,"props":2108,"children":2110},{"class":63,"line":2109},41,[2111,2116],{"type":23,"tag":61,"props":2112,"children":2113},{"style":1532},[2114],{"type":33,"value":2115},"  \"autoload\"",{"type":23,"tag":61,"props":2117,"children":2118},{"style":74},[2119],{"type":33,"value":1605},{"type":23,"tag":61,"props":2121,"children":2123},{"class":63,"line":2122},42,[2124,2129],{"type":23,"tag":61,"props":2125,"children":2126},{"style":1532},[2127],{"type":33,"value":2128},"    \"psr-4\"",{"type":23,"tag":61,"props":2130,"children":2131},{"style":74},[2132],{"type":33,"value":1605},{"type":23,"tag":61,"props":2134,"children":2136},{"class":63,"line":2135},43,[2137,2142,2148,2153,2157],{"type":23,"tag":61,"props":2138,"children":2139},{"style":1532},[2140],{"type":33,"value":2141},"      \"App",{"type":23,"tag":61,"props":2143,"children":2145},{"style":2144},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#AE81FF;--shiki-sepia-font-style:italic",[2146],{"type":33,"value":2147},"\\\\",{"type":23,"tag":61,"props":2149,"children":2150},{"style":1532},[2151],{"type":33,"value":2152},"\"",{"type":23,"tag":61,"props":2154,"children":2155},{"style":74},[2156],{"type":33,"value":104},{"type":23,"tag":61,"props":2158,"children":2159},{"style":1542},[2160],{"type":33,"value":2161},"\"src/\"\n",{"type":23,"tag":61,"props":2163,"children":2165},{"class":63,"line":2164},44,[2166],{"type":23,"tag":61,"props":2167,"children":2168},{"style":74},[2169],{"type":33,"value":2097},{"type":23,"tag":61,"props":2171,"children":2173},{"class":63,"line":2172},45,[2174],{"type":23,"tag":61,"props":2175,"children":2176},{"style":74},[2177],{"type":33,"value":1754},{"type":23,"tag":61,"props":2179,"children":2181},{"class":63,"line":2180},46,[2182,2187,2191,2196],{"type":23,"tag":61,"props":2183,"children":2184},{"style":1532},[2185],{"type":33,"value":2186},"  \"prefer-stable\"",{"type":23,"tag":61,"props":2188,"children":2189},{"style":74},[2190],{"type":33,"value":104},{"type":23,"tag":61,"props":2192,"children":2193},{"style":1844},[2194],{"type":33,"value":2195},"true",{"type":23,"tag":61,"props":2197,"children":2198},{"style":74},[2199],{"type":33,"value":1550},{"type":23,"tag":61,"props":2201,"children":2203},{"class":63,"line":2202},47,[2204,2209],{"type":23,"tag":61,"props":2205,"children":2206},{"style":1532},[2207],{"type":33,"value":2208},"  \"config\"",{"type":23,"tag":61,"props":2210,"children":2211},{"style":74},[2212],{"type":33,"value":1605},{"type":23,"tag":61,"props":2214,"children":2216},{"class":63,"line":2215},48,[2217,2222],{"type":23,"tag":61,"props":2218,"children":2219},{"style":1532},[2220],{"type":33,"value":2221},"    \"allow-plugins\"",{"type":23,"tag":61,"props":2223,"children":2224},{"style":74},[2225],{"type":33,"value":1605},{"type":23,"tag":61,"props":2227,"children":2229},{"class":63,"line":2228},49,[2230,2235,2239,2243],{"type":23,"tag":61,"props":2231,"children":2232},{"style":1532},[2233],{"type":33,"value":2234},"      \"symfony/flex\"",{"type":23,"tag":61,"props":2236,"children":2237},{"style":74},[2238],{"type":33,"value":104},{"type":23,"tag":61,"props":2240,"children":2241},{"style":1844},[2242],{"type":33,"value":2195},{"type":23,"tag":61,"props":2244,"children":2245},{"style":74},[2246],{"type":33,"value":1550},{"type":23,"tag":61,"props":2248,"children":2250},{"class":63,"line":2249},50,[2251,2256,2260],{"type":23,"tag":61,"props":2252,"children":2253},{"style":1532},[2254],{"type":33,"value":2255},"      \"symfony/runtime\"",{"type":23,"tag":61,"props":2257,"children":2258},{"style":74},[2259],{"type":33,"value":104},{"type":23,"tag":61,"props":2261,"children":2262},{"style":1844},[2263],{"type":33,"value":1847},{"type":23,"tag":61,"props":2265,"children":2267},{"class":63,"line":2266},51,[2268],{"type":23,"tag":61,"props":2269,"children":2270},{"style":74},[2271],{"type":33,"value":1863},{"type":23,"tag":61,"props":2273,"children":2275},{"class":63,"line":2274},52,[2276,2281,2285,2289],{"type":23,"tag":61,"props":2277,"children":2278},{"style":1532},[2279],{"type":33,"value":2280},"    \"optimize-autoloader\"",{"type":23,"tag":61,"props":2282,"children":2283},{"style":74},[2284],{"type":33,"value":104},{"type":23,"tag":61,"props":2286,"children":2287},{"style":1844},[2288],{"type":33,"value":2195},{"type":23,"tag":61,"props":2290,"children":2291},{"style":74},[2292],{"type":33,"value":1550},{"type":23,"tag":61,"props":2294,"children":2296},{"class":63,"line":2295},53,[2297,2302,2306],{"type":23,"tag":61,"props":2298,"children":2299},{"style":1532},[2300],{"type":33,"value":2301},"    \"sort-packages\"",{"type":23,"tag":61,"props":2303,"children":2304},{"style":74},[2305],{"type":33,"value":104},{"type":23,"tag":61,"props":2307,"children":2308},{"style":1844},[2309],{"type":33,"value":1847},{"type":23,"tag":61,"props":2311,"children":2313},{"class":63,"line":2312},54,[2314],{"type":23,"tag":61,"props":2315,"children":2316},{"style":74},[2317],{"type":33,"value":1754},{"type":23,"tag":61,"props":2319,"children":2321},{"class":63,"line":2320},55,[2322,2327],{"type":23,"tag":61,"props":2323,"children":2324},{"style":1532},[2325],{"type":33,"value":2326},"  \"scripts\"",{"type":23,"tag":61,"props":2328,"children":2329},{"style":74},[2330],{"type":33,"value":1605},{"type":23,"tag":61,"props":2332,"children":2334},{"class":63,"line":2333},56,[2335,2340],{"type":23,"tag":61,"props":2336,"children":2337},{"style":1532},[2338],{"type":33,"value":2339},"    \"auto-scripts\"",{"type":23,"tag":61,"props":2341,"children":2342},{"style":74},[2343],{"type":33,"value":1605},{"type":23,"tag":61,"props":2345,"children":2347},{"class":63,"line":2346},57,[2348,2353,2357],{"type":23,"tag":61,"props":2349,"children":2350},{"style":1532},[2351],{"type":33,"value":2352},"      \"assets:install\"",{"type":23,"tag":61,"props":2354,"children":2355},{"style":74},[2356],{"type":33,"value":104},{"type":23,"tag":61,"props":2358,"children":2359},{"style":1542},[2360],{"type":33,"value":2361},"\"symfony-cmd\"\n",{"type":23,"tag":61,"props":2363,"children":2365},{"class":63,"line":2364},58,[2366],{"type":23,"tag":61,"props":2367,"children":2368},{"style":74},[2369],{"type":33,"value":1863},{"type":23,"tag":61,"props":2371,"children":2373},{"class":63,"line":2372},59,[2374,2379],{"type":23,"tag":61,"props":2375,"children":2376},{"style":1532},[2377],{"type":33,"value":2378},"    \"post-install-cmd\"",{"type":23,"tag":61,"props":2380,"children":2381},{"style":74},[2382],{"type":33,"value":1767},{"type":23,"tag":61,"props":2384,"children":2386},{"class":63,"line":2385},60,[2387],{"type":23,"tag":61,"props":2388,"children":2389},{"style":1542},[2390],{"type":33,"value":2391},"      \"@auto-scripts\"\n",{"type":23,"tag":61,"props":2393,"children":2395},{"class":63,"line":2394},61,[2396],{"type":23,"tag":61,"props":2397,"children":2398},{"style":74},[2399],{"type":33,"value":2400},"    ],\n",{"type":23,"tag":61,"props":2402,"children":2404},{"class":63,"line":2403},62,[2405,2410],{"type":23,"tag":61,"props":2406,"children":2407},{"style":1532},[2408],{"type":33,"value":2409},"    \"post-update-cmd\"",{"type":23,"tag":61,"props":2411,"children":2412},{"style":74},[2413],{"type":33,"value":1767},{"type":23,"tag":61,"props":2415,"children":2417},{"class":63,"line":2416},63,[2418],{"type":23,"tag":61,"props":2419,"children":2420},{"style":1542},[2421],{"type":33,"value":2391},{"type":23,"tag":61,"props":2423,"children":2425},{"class":63,"line":2424},64,[2426],{"type":23,"tag":61,"props":2427,"children":2428},{"style":74},[2429],{"type":33,"value":2430},"    ]\n",{"type":23,"tag":61,"props":2432,"children":2434},{"class":63,"line":2433},65,[2435],{"type":23,"tag":61,"props":2436,"children":2437},{"style":74},[2438],{"type":33,"value":1754},{"type":23,"tag":61,"props":2440,"children":2442},{"class":63,"line":2441},66,[2443,2448],{"type":23,"tag":61,"props":2444,"children":2445},{"style":1532},[2446],{"type":33,"value":2447},"  \"extra\"",{"type":23,"tag":61,"props":2449,"children":2450},{"style":74},[2451],{"type":33,"value":1605},{"type":23,"tag":61,"props":2453,"children":2455},{"class":63,"line":2454},67,[2456,2461],{"type":23,"tag":61,"props":2457,"children":2458},{"style":1532},[2459],{"type":33,"value":2460},"    \"symfony\"",{"type":23,"tag":61,"props":2462,"children":2463},{"style":74},[2464],{"type":33,"value":1605},{"type":23,"tag":61,"props":2466,"children":2468},{"class":63,"line":2467},68,[2469,2474,2478,2482],{"type":23,"tag":61,"props":2470,"children":2471},{"style":1532},[2472],{"type":33,"value":2473},"      \"allow-contrib\"",{"type":23,"tag":61,"props":2475,"children":2476},{"style":74},[2477],{"type":33,"value":104},{"type":23,"tag":61,"props":2479,"children":2480},{"style":1844},[2481],{"type":33,"value":2195},{"type":23,"tag":61,"props":2483,"children":2484},{"style":74},[2485],{"type":33,"value":1550},{"type":23,"tag":61,"props":2487,"children":2489},{"class":63,"line":2488},69,[2490,2495],{"type":23,"tag":61,"props":2491,"children":2492},{"style":1532},[2493],{"type":33,"value":2494},"      \"endpoint\"",{"type":23,"tag":61,"props":2496,"children":2497},{"style":74},[2498],{"type":33,"value":1767},{"type":23,"tag":61,"props":2500,"children":2502},{"class":63,"line":2501},70,[2503,2508],{"type":23,"tag":61,"props":2504,"children":2505},{"style":1542},[2506],{"type":33,"value":2507},"        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\"",{"type":23,"tag":61,"props":2509,"children":2510},{"style":74},[2511],{"type":33,"value":1550},{"type":23,"tag":61,"props":2513,"children":2515},{"class":63,"line":2514},71,[2516],{"type":23,"tag":61,"props":2517,"children":2518},{"style":1542},[2519],{"type":33,"value":2520},"        \"flex://defaults\"\n",{"type":23,"tag":61,"props":2522,"children":2524},{"class":63,"line":2523},72,[2525],{"type":23,"tag":61,"props":2526,"children":2527},{"style":74},[2528],{"type":33,"value":2529},"      ]\n",{"type":23,"tag":61,"props":2531,"children":2533},{"class":63,"line":2532},73,[2534],{"type":23,"tag":61,"props":2535,"children":2536},{"style":74},[2537],{"type":33,"value":2097},{"type":23,"tag":61,"props":2539,"children":2541},{"class":63,"line":2540},74,[2542],{"type":23,"tag":61,"props":2543,"children":2544},{"style":74},[2545],{"type":33,"value":2546},"  }\n",{"type":23,"tag":61,"props":2548,"children":2550},{"class":63,"line":2549},75,[2551],{"type":23,"tag":61,"props":2552,"children":2553},{"style":74},[2554],{"type":33,"value":2555},"}\n",{"type":23,"tag":24,"props":2557,"children":2558},{},[2559],{"type":33,"value":2560},"und installieren es mit",{"type":23,"tag":43,"props":2562,"children":2566},{"className":2563,"code":2564,"language":2565,"meta":7,"style":7},"language-shell shiki shiki-themes github-dark github-dark monokai","composer req acme/sample-plugin\n","shell",[2567],{"type":23,"tag":57,"props":2568,"children":2569},{"__ignoreMap":7},[2570],{"type":23,"tag":61,"props":2571,"children":2572},{"class":63,"line":64},[2573,2578,2583],{"type":23,"tag":61,"props":2574,"children":2576},{"style":2575},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[2577],{"type":33,"value":1502},{"type":23,"tag":61,"props":2579,"children":2580},{"style":107},[2581],{"type":33,"value":2582}," req",{"type":23,"tag":61,"props":2584,"children":2585},{"style":107},[2586],{"type":33,"value":2587}," acme/sample-plugin\n",{"type":23,"tag":2589,"props":2590,"children":2592},"v-alert",{"type":2591},"error",[2593],{"type":23,"tag":24,"props":2594,"children":2595},{},[2596],{"type":33,"value":2597},"Could not find a version of package acme/sample-plugin matching your minimum-stability (stable).\nRequire it with an explicit version constraint allowing its desired stability.",{"type":23,"tag":1062,"props":2599,"children":2600},{},[],{"type":23,"tag":24,"props":2602,"children":2603},{},[2604,2606,2612],{"type":33,"value":2605},"Ja... das ist der Nachteil. Wir müssen ",{"type":23,"tag":57,"props":2607,"children":2609},{"className":2608},[],[2610],{"type":33,"value":2611},"dev-master",{"type":33,"value":2613}," als Version verwenden",{"type":23,"tag":43,"props":2615,"children":2617},{"className":2563,"code":2616,"language":2565,"meta":7,"style":7},"composer req acme/sample-plugin:dev-master\n",[2618],{"type":23,"tag":57,"props":2619,"children":2620},{"__ignoreMap":7},[2621],{"type":23,"tag":61,"props":2622,"children":2623},{"class":63,"line":64},[2624,2628,2632],{"type":23,"tag":61,"props":2625,"children":2626},{"style":2575},[2627],{"type":33,"value":1502},{"type":23,"tag":61,"props":2629,"children":2630},{"style":107},[2631],{"type":33,"value":2582},{"type":23,"tag":61,"props":2633,"children":2634},{"style":107},[2635],{"type":33,"value":2636}," acme/sample-plugin:dev-master\n",{"type":23,"tag":43,"props":2638,"children":2642},{"className":2639,"code":2640,"language":2641,"meta":7,"style":7},"language-output shiki shiki-themes github-dark github-dark monokai","./composer.json has been updated\nRunning composer update acme/sample-plugin\nLoading composer repositories with package information                                                                \nUpdating dependencies                                 \nLock file operations: 1 install, 0 updates, 0 removals\n  - Locking acme/sample-plugin (dev-master 294414d)\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nPackage operations: 1 install, 0 updates, 0 removals\n  - Syncing acme/sample-plugin (dev-master 294414d) into cache\n  - Installing acme/sample-plugin (dev-master 294414d): Cloning 294414deb2 from cache\nGenerating optimized autoload files\n\nRun composer recipes at any time to see the status of your Symfony recipes.\n\nExecuting script assets:install [OK]\n","output",[2643],{"type":23,"tag":57,"props":2644,"children":2645},{"__ignoreMap":7},[2646,2654,2662,2670,2678,2686,2694,2702,2710,2718,2726,2734,2742,2749,2757,2764],{"type":23,"tag":61,"props":2647,"children":2648},{"class":63,"line":64},[2649],{"type":23,"tag":61,"props":2650,"children":2651},{},[2652],{"type":33,"value":2653},"./composer.json has been updated\n",{"type":23,"tag":61,"props":2655,"children":2656},{"class":63,"line":80},[2657],{"type":23,"tag":61,"props":2658,"children":2659},{},[2660],{"type":33,"value":2661},"Running composer update acme/sample-plugin\n",{"type":23,"tag":61,"props":2663,"children":2664},{"class":63,"line":93},[2665],{"type":23,"tag":61,"props":2666,"children":2667},{},[2668],{"type":33,"value":2669},"Loading composer repositories with package information                                                                \n",{"type":23,"tag":61,"props":2671,"children":2672},{"class":63,"line":113},[2673],{"type":23,"tag":61,"props":2674,"children":2675},{},[2676],{"type":33,"value":2677},"Updating dependencies                                 \n",{"type":23,"tag":61,"props":2679,"children":2680},{"class":63,"line":48},[2681],{"type":23,"tag":61,"props":2682,"children":2683},{},[2684],{"type":33,"value":2685},"Lock file operations: 1 install, 0 updates, 0 removals\n",{"type":23,"tag":61,"props":2687,"children":2688},{"class":63,"line":49},[2689],{"type":23,"tag":61,"props":2690,"children":2691},{},[2692],{"type":33,"value":2693},"  - Locking acme/sample-plugin (dev-master 294414d)\n",{"type":23,"tag":61,"props":2695,"children":2696},{"class":63,"line":50},[2697],{"type":23,"tag":61,"props":2698,"children":2699},{},[2700],{"type":33,"value":2701},"Writing lock file\n",{"type":23,"tag":61,"props":2703,"children":2704},{"class":63,"line":51},[2705],{"type":23,"tag":61,"props":2706,"children":2707},{},[2708],{"type":33,"value":2709},"Installing dependencies from lock file (including require-dev)\n",{"type":23,"tag":61,"props":2711,"children":2712},{"class":63,"line":52},[2713],{"type":23,"tag":61,"props":2714,"children":2715},{},[2716],{"type":33,"value":2717},"Package operations: 1 install, 0 updates, 0 removals\n",{"type":23,"tag":61,"props":2719,"children":2720},{"class":63,"line":718},[2721],{"type":23,"tag":61,"props":2722,"children":2723},{},[2724],{"type":33,"value":2725},"  - Syncing acme/sample-plugin (dev-master 294414d) into cache\n",{"type":23,"tag":61,"props":2727,"children":2728},{"class":63,"line":731},[2729],{"type":23,"tag":61,"props":2730,"children":2731},{},[2732],{"type":33,"value":2733},"  - Installing acme/sample-plugin (dev-master 294414d): Cloning 294414deb2 from cache\n",{"type":23,"tag":61,"props":2735,"children":2736},{"class":63,"line":744},[2737],{"type":23,"tag":61,"props":2738,"children":2739},{},[2740],{"type":33,"value":2741},"Generating optimized autoload files\n",{"type":23,"tag":61,"props":2743,"children":2744},{"class":63,"line":757},[2745],{"type":23,"tag":61,"props":2746,"children":2747},{"emptyLinePlaceholder":787},[2748],{"type":33,"value":790},{"type":23,"tag":61,"props":2750,"children":2751},{"class":63,"line":770},[2752],{"type":23,"tag":61,"props":2753,"children":2754},{},[2755],{"type":33,"value":2756},"Run composer recipes at any time to see the status of your Symfony recipes.\n",{"type":23,"tag":61,"props":2758,"children":2759},{"class":63,"line":783},[2760],{"type":23,"tag":61,"props":2761,"children":2762},{"emptyLinePlaceholder":787},[2763],{"type":33,"value":790},{"type":23,"tag":61,"props":2765,"children":2766},{"class":63,"line":793},[2767],{"type":23,"tag":61,"props":2768,"children":2769},{},[2770],{"type":33,"value":2771},"Executing script assets:install [OK]\n",{"type":23,"tag":24,"props":2773,"children":2774},{},[2775,2777,2782],{"type":33,"value":2776},"Composer wird ",{"type":23,"tag":57,"props":2778,"children":2780},{"className":2779},[],[2781],{"type":33,"value":296},{"type":33,"value":2783}," verwenden, um unser Repository zu klonen, und den Standard-Branch sowie den Commit-Hash verwenden, um den Release zu verfolgen.",{"type":23,"tag":24,"props":2785,"children":2786},{},[2787],{"type":33,"value":2788},"Das funktioniert, aber wir können es besser machen.",{"type":23,"tag":993,"props":2790,"children":2792},{"id":2791},"git-tags",[2793],{"type":33,"value":2794},"Git Tags",{"type":23,"tag":24,"props":2796,"children":2797},{},[2798,2800,2806],{"type":33,"value":2799},"Wir taggen nun unser Plugin als ",{"type":23,"tag":57,"props":2801,"children":2803},{"className":2802},[],[2804],{"type":33,"value":2805},"v1.0.0",{"type":33,"value":1043},{"type":23,"tag":24,"props":2808,"children":2809},{},[2810,2812,2818,2820,2826],{"type":33,"value":2811},"Bitte beachten, dass Sie die ",{"type":23,"tag":57,"props":2813,"children":2815},{"className":2814},[],[2816],{"type":33,"value":2817},"version",{"type":33,"value":2819}," in der ",{"type":23,"tag":57,"props":2821,"children":2823},{"className":2822},[],[2824],{"type":33,"value":2825},"composer.json",{"type":33,"value":2827}," gesetzt ist.",{"type":23,"tag":43,"props":2829,"children":2833},{"className":1507,"code":2830,"filename":2831,"highlights":2832,"language":1364,"meta":7,"style":7},"{\n    \"name\": \"acme/sample-plugin\",\n    \"description\": \"acme/sample-plugin\",\n    \"type\": \"shopware-platform-plugin\",\n    \"version\": \"1.0.0\",\n    \"license\": \"MIT\",\n    \"require\": {\n        \"shopware/core\": \"~6.6.0\"\n    },\n    \"extra\": {\n        \"shopware-plugin-class\": \"Acme\\\\SamplePlugin\",\n        \"label\": {\n            \"de-DE\": \"Skeleton plugin\",\n            \"en-GB\": \"Skeleton plugin\"\n        }\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"Acme\\\\\": \"src/\"\n        }\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Acme\\\\Tests\\\\\": \"tests/\"\n        }\n    }\n}\n\n","\u003Cplugin-root>/composer.json",[48],[2834],{"type":23,"tag":57,"props":2835,"children":2836},{"__ignoreMap":7},[2837,2844,2865,2885,2906,2928,2948,2960,2977,2984,2996,3026,3038,3059,3076,3084,3091,3103,3115,3139,3146,3153,3165,3176,3209,3216,3223],{"type":23,"tag":61,"props":2838,"children":2839},{"class":63,"line":64},[2840],{"type":23,"tag":61,"props":2841,"children":2842},{"style":74},[2843],{"type":33,"value":1526},{"type":23,"tag":61,"props":2845,"children":2846},{"class":63,"line":80},[2847,2852,2856,2861],{"type":23,"tag":61,"props":2848,"children":2849},{"style":1532},[2850],{"type":33,"value":2851},"    \"name\"",{"type":23,"tag":61,"props":2853,"children":2854},{"style":74},[2855],{"type":33,"value":104},{"type":23,"tag":61,"props":2857,"children":2858},{"style":1542},[2859],{"type":33,"value":2860},"\"acme/sample-plugin\"",{"type":23,"tag":61,"props":2862,"children":2863},{"style":74},[2864],{"type":33,"value":1550},{"type":23,"tag":61,"props":2866,"children":2867},{"class":63,"line":93},[2868,2873,2877,2881],{"type":23,"tag":61,"props":2869,"children":2870},{"style":1532},[2871],{"type":33,"value":2872},"    \"description\"",{"type":23,"tag":61,"props":2874,"children":2875},{"style":74},[2876],{"type":33,"value":104},{"type":23,"tag":61,"props":2878,"children":2879},{"style":1542},[2880],{"type":33,"value":2860},{"type":23,"tag":61,"props":2882,"children":2883},{"style":74},[2884],{"type":33,"value":1550},{"type":23,"tag":61,"props":2886,"children":2887},{"class":63,"line":113},[2888,2893,2897,2902],{"type":23,"tag":61,"props":2889,"children":2890},{"style":1532},[2891],{"type":33,"value":2892},"    \"type\"",{"type":23,"tag":61,"props":2894,"children":2895},{"style":74},[2896],{"type":33,"value":104},{"type":23,"tag":61,"props":2898,"children":2899},{"style":1542},[2900],{"type":33,"value":2901},"\"shopware-platform-plugin\"",{"type":23,"tag":61,"props":2903,"children":2904},{"style":74},[2905],{"type":33,"value":1550},{"type":23,"tag":61,"props":2907,"children":2909},{"class":2908,"line":48},[63,127],[2910,2915,2919,2924],{"type":23,"tag":61,"props":2911,"children":2912},{"style":1532},[2913],{"type":33,"value":2914},"    \"version\"",{"type":23,"tag":61,"props":2916,"children":2917},{"style":74},[2918],{"type":33,"value":104},{"type":23,"tag":61,"props":2920,"children":2921},{"style":1542},[2922],{"type":33,"value":2923},"\"1.0.0\"",{"type":23,"tag":61,"props":2925,"children":2926},{"style":74},[2927],{"type":33,"value":1550},{"type":23,"tag":61,"props":2929,"children":2930},{"class":63,"line":49},[2931,2936,2940,2944],{"type":23,"tag":61,"props":2932,"children":2933},{"style":1532},[2934],{"type":33,"value":2935},"    \"license\"",{"type":23,"tag":61,"props":2937,"children":2938},{"style":74},[2939],{"type":33,"value":104},{"type":23,"tag":61,"props":2941,"children":2942},{"style":1542},[2943],{"type":33,"value":1567},{"type":23,"tag":61,"props":2945,"children":2946},{"style":74},[2947],{"type":33,"value":1550},{"type":23,"tag":61,"props":2949,"children":2950},{"class":63,"line":50},[2951,2956],{"type":23,"tag":61,"props":2952,"children":2953},{"style":1532},[2954],{"type":33,"value":2955},"    \"require\"",{"type":23,"tag":61,"props":2957,"children":2958},{"style":74},[2959],{"type":33,"value":1605},{"type":23,"tag":61,"props":2961,"children":2962},{"class":63,"line":51},[2963,2968,2972],{"type":23,"tag":61,"props":2964,"children":2965},{"style":1532},[2966],{"type":33,"value":2967},"        \"shopware/core\"",{"type":23,"tag":61,"props":2969,"children":2970},{"style":74},[2971],{"type":33,"value":104},{"type":23,"tag":61,"props":2973,"children":2974},{"style":1542},[2975],{"type":33,"value":2976},"\"~6.6.0\"\n",{"type":23,"tag":61,"props":2978,"children":2979},{"class":63,"line":52},[2980],{"type":23,"tag":61,"props":2981,"children":2982},{"style":74},[2983],{"type":33,"value":1863},{"type":23,"tag":61,"props":2985,"children":2986},{"class":63,"line":718},[2987,2992],{"type":23,"tag":61,"props":2988,"children":2989},{"style":1532},[2990],{"type":33,"value":2991},"    \"extra\"",{"type":23,"tag":61,"props":2993,"children":2994},{"style":74},[2995],{"type":33,"value":1605},{"type":23,"tag":61,"props":2997,"children":2998},{"class":63,"line":731},[2999,3004,3008,3013,3017,3022],{"type":23,"tag":61,"props":3000,"children":3001},{"style":1532},[3002],{"type":33,"value":3003},"        \"shopware-plugin-class\"",{"type":23,"tag":61,"props":3005,"children":3006},{"style":74},[3007],{"type":33,"value":104},{"type":23,"tag":61,"props":3009,"children":3010},{"style":1542},[3011],{"type":33,"value":3012},"\"Acme",{"type":23,"tag":61,"props":3014,"children":3015},{"style":1844},[3016],{"type":33,"value":2147},{"type":23,"tag":61,"props":3018,"children":3019},{"style":1542},[3020],{"type":33,"value":3021},"SamplePlugin\"",{"type":23,"tag":61,"props":3023,"children":3024},{"style":74},[3025],{"type":33,"value":1550},{"type":23,"tag":61,"props":3027,"children":3028},{"class":63,"line":744},[3029,3034],{"type":23,"tag":61,"props":3030,"children":3031},{"style":1532},[3032],{"type":33,"value":3033},"        \"label\"",{"type":23,"tag":61,"props":3035,"children":3036},{"style":74},[3037],{"type":33,"value":1605},{"type":23,"tag":61,"props":3039,"children":3040},{"class":63,"line":757},[3041,3046,3050,3055],{"type":23,"tag":61,"props":3042,"children":3043},{"style":1532},[3044],{"type":33,"value":3045},"            \"de-DE\"",{"type":23,"tag":61,"props":3047,"children":3048},{"style":74},[3049],{"type":33,"value":104},{"type":23,"tag":61,"props":3051,"children":3052},{"style":1542},[3053],{"type":33,"value":3054},"\"Skeleton plugin\"",{"type":23,"tag":61,"props":3056,"children":3057},{"style":74},[3058],{"type":33,"value":1550},{"type":23,"tag":61,"props":3060,"children":3061},{"class":63,"line":770},[3062,3067,3071],{"type":23,"tag":61,"props":3063,"children":3064},{"style":1532},[3065],{"type":33,"value":3066},"            \"en-GB\"",{"type":23,"tag":61,"props":3068,"children":3069},{"style":74},[3070],{"type":33,"value":104},{"type":23,"tag":61,"props":3072,"children":3073},{"style":1542},[3074],{"type":33,"value":3075},"\"Skeleton plugin\"\n",{"type":23,"tag":61,"props":3077,"children":3078},{"class":63,"line":783},[3079],{"type":23,"tag":61,"props":3080,"children":3081},{"style":74},[3082],{"type":33,"value":3083},"        }\n",{"type":23,"tag":61,"props":3085,"children":3086},{"class":63,"line":793},[3087],{"type":23,"tag":61,"props":3088,"children":3089},{"style":74},[3090],{"type":33,"value":1863},{"type":23,"tag":61,"props":3092,"children":3093},{"class":63,"line":806},[3094,3099],{"type":23,"tag":61,"props":3095,"children":3096},{"style":1532},[3097],{"type":33,"value":3098},"    \"autoload\"",{"type":23,"tag":61,"props":3100,"children":3101},{"style":74},[3102],{"type":33,"value":1605},{"type":23,"tag":61,"props":3104,"children":3105},{"class":63,"line":819},[3106,3111],{"type":23,"tag":61,"props":3107,"children":3108},{"style":1532},[3109],{"type":33,"value":3110},"        \"psr-4\"",{"type":23,"tag":61,"props":3112,"children":3113},{"style":74},[3114],{"type":33,"value":1605},{"type":23,"tag":61,"props":3116,"children":3117},{"class":63,"line":828},[3118,3123,3127,3131,3135],{"type":23,"tag":61,"props":3119,"children":3120},{"style":1532},[3121],{"type":33,"value":3122},"            \"Acme",{"type":23,"tag":61,"props":3124,"children":3125},{"style":2144},[3126],{"type":33,"value":2147},{"type":23,"tag":61,"props":3128,"children":3129},{"style":1532},[3130],{"type":33,"value":2152},{"type":23,"tag":61,"props":3132,"children":3133},{"style":74},[3134],{"type":33,"value":104},{"type":23,"tag":61,"props":3136,"children":3137},{"style":1542},[3138],{"type":33,"value":2161},{"type":23,"tag":61,"props":3140,"children":3141},{"class":63,"line":841},[3142],{"type":23,"tag":61,"props":3143,"children":3144},{"style":74},[3145],{"type":33,"value":3083},{"type":23,"tag":61,"props":3147,"children":3148},{"class":63,"line":854},[3149],{"type":23,"tag":61,"props":3150,"children":3151},{"style":74},[3152],{"type":33,"value":1863},{"type":23,"tag":61,"props":3154,"children":3155},{"class":63,"line":867},[3156,3161],{"type":23,"tag":61,"props":3157,"children":3158},{"style":1532},[3159],{"type":33,"value":3160},"    \"autoload-dev\"",{"type":23,"tag":61,"props":3162,"children":3163},{"style":74},[3164],{"type":33,"value":1605},{"type":23,"tag":61,"props":3166,"children":3167},{"class":63,"line":875},[3168,3172],{"type":23,"tag":61,"props":3169,"children":3170},{"style":1532},[3171],{"type":33,"value":3110},{"type":23,"tag":61,"props":3173,"children":3174},{"style":74},[3175],{"type":33,"value":1605},{"type":23,"tag":61,"props":3177,"children":3178},{"class":63,"line":888},[3179,3183,3187,3192,3196,3200,3204],{"type":23,"tag":61,"props":3180,"children":3181},{"style":1532},[3182],{"type":33,"value":3122},{"type":23,"tag":61,"props":3184,"children":3185},{"style":2144},[3186],{"type":33,"value":2147},{"type":23,"tag":61,"props":3188,"children":3189},{"style":1532},[3190],{"type":33,"value":3191},"Tests",{"type":23,"tag":61,"props":3193,"children":3194},{"style":2144},[3195],{"type":33,"value":2147},{"type":23,"tag":61,"props":3197,"children":3198},{"style":1532},[3199],{"type":33,"value":2152},{"type":23,"tag":61,"props":3201,"children":3202},{"style":74},[3203],{"type":33,"value":104},{"type":23,"tag":61,"props":3205,"children":3206},{"style":1542},[3207],{"type":33,"value":3208},"\"tests/\"\n",{"type":23,"tag":61,"props":3210,"children":3211},{"class":63,"line":901},[3212],{"type":23,"tag":61,"props":3213,"children":3214},{"style":74},[3215],{"type":33,"value":3083},{"type":23,"tag":61,"props":3217,"children":3218},{"class":63,"line":914},[3219],{"type":23,"tag":61,"props":3220,"children":3221},{"style":74},[3222],{"type":33,"value":2097},{"type":23,"tag":61,"props":3224,"children":3225},{"class":63,"line":927},[3226],{"type":23,"tag":61,"props":3227,"children":3228},{"style":74},[3229],{"type":33,"value":2555},{"type":23,"tag":43,"props":3231,"children":3233},{"className":2563,"code":3232,"language":2565,"meta":7,"style":7},"git tag v1.0.0\ngit push --tags\n",[3234],{"type":23,"tag":57,"props":3235,"children":3236},{"__ignoreMap":7},[3237,3254],{"type":23,"tag":61,"props":3238,"children":3239},{"class":63,"line":64},[3240,3244,3249],{"type":23,"tag":61,"props":3241,"children":3242},{"style":2575},[3243],{"type":33,"value":296},{"type":23,"tag":61,"props":3245,"children":3246},{"style":107},[3247],{"type":33,"value":3248}," tag",{"type":23,"tag":61,"props":3250,"children":3251},{"style":107},[3252],{"type":33,"value":3253}," v1.0.0\n",{"type":23,"tag":61,"props":3255,"children":3256},{"class":63,"line":80},[3257,3261,3266],{"type":23,"tag":61,"props":3258,"children":3259},{"style":2575},[3260],{"type":33,"value":296},{"type":23,"tag":61,"props":3262,"children":3263},{"style":107},[3264],{"type":33,"value":3265}," push",{"type":23,"tag":61,"props":3267,"children":3268},{"style":1844},[3269],{"type":33,"value":3270}," --tags\n",{"type":23,"tag":24,"props":3272,"children":3273},{},[3274],{"type":33,"value":3275},"Nun wird dies funktionieren:",{"type":23,"tag":43,"props":3277,"children":3278},{"className":2563,"code":2564,"language":2565,"meta":7,"style":7},[3279],{"type":23,"tag":57,"props":3280,"children":3281},{"__ignoreMap":7},[3282],{"type":23,"tag":61,"props":3283,"children":3284},{"class":63,"line":64},[3285,3289,3293],{"type":23,"tag":61,"props":3286,"children":3287},{"style":2575},[3288],{"type":33,"value":1502},{"type":23,"tag":61,"props":3290,"children":3291},{"style":107},[3292],{"type":33,"value":2582},{"type":23,"tag":61,"props":3294,"children":3295},{"style":107},[3296],{"type":33,"value":2587},{"type":23,"tag":43,"props":3298,"children":3302},{"className":3299,"code":3300,"language":3301,"meta":7,"style":7},"language-terminaloutput shiki shiki-themes github-dark github-dark monokai","./composer.json has been updated                                                                                                            \nRunning composer update acme/sample-plugin\nLoading composer repositories with package information\nUpdating dependencies\nLock file operations: 1 install, 0 updates, 0 removals\n  - Locking acme/sample-plugin (1.0.0)\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nPackage operations: 1 install, 0 updates, 0 removals\n  - Syncing acme/sample-plugin (1.0.0) into cache\n  - Installing acme/sample-plugin (1.0.0): Cloning 294414deb2 from cache\nGenerating optimized autoload files\n\nRun composer recipes at any time to see the status of your Symfony recipes.\n\nExecuting script assets:install [OK]\n\nUsing version ^1.0 for acme/sample-plugin\n","terminaloutput",[3303],{"type":23,"tag":57,"props":3304,"children":3305},{"__ignoreMap":7},[3306,3314,3321,3329,3337,3344,3352,3359,3366,3373,3381,3389,3396,3403,3410,3417,3424,3431],{"type":23,"tag":61,"props":3307,"children":3308},{"class":63,"line":64},[3309],{"type":23,"tag":61,"props":3310,"children":3311},{},[3312],{"type":33,"value":3313},"./composer.json has been updated                                                                                                            \n",{"type":23,"tag":61,"props":3315,"children":3316},{"class":63,"line":80},[3317],{"type":23,"tag":61,"props":3318,"children":3319},{},[3320],{"type":33,"value":2661},{"type":23,"tag":61,"props":3322,"children":3323},{"class":63,"line":93},[3324],{"type":23,"tag":61,"props":3325,"children":3326},{},[3327],{"type":33,"value":3328},"Loading composer repositories with package information\n",{"type":23,"tag":61,"props":3330,"children":3331},{"class":63,"line":113},[3332],{"type":23,"tag":61,"props":3333,"children":3334},{},[3335],{"type":33,"value":3336},"Updating dependencies\n",{"type":23,"tag":61,"props":3338,"children":3339},{"class":63,"line":48},[3340],{"type":23,"tag":61,"props":3341,"children":3342},{},[3343],{"type":33,"value":2685},{"type":23,"tag":61,"props":3345,"children":3346},{"class":63,"line":49},[3347],{"type":23,"tag":61,"props":3348,"children":3349},{},[3350],{"type":33,"value":3351},"  - Locking acme/sample-plugin (1.0.0)\n",{"type":23,"tag":61,"props":3353,"children":3354},{"class":63,"line":50},[3355],{"type":23,"tag":61,"props":3356,"children":3357},{},[3358],{"type":33,"value":2701},{"type":23,"tag":61,"props":3360,"children":3361},{"class":63,"line":51},[3362],{"type":23,"tag":61,"props":3363,"children":3364},{},[3365],{"type":33,"value":2709},{"type":23,"tag":61,"props":3367,"children":3368},{"class":63,"line":52},[3369],{"type":23,"tag":61,"props":3370,"children":3371},{},[3372],{"type":33,"value":2717},{"type":23,"tag":61,"props":3374,"children":3375},{"class":63,"line":718},[3376],{"type":23,"tag":61,"props":3377,"children":3378},{},[3379],{"type":33,"value":3380},"  - Syncing acme/sample-plugin (1.0.0) into cache\n",{"type":23,"tag":61,"props":3382,"children":3383},{"class":63,"line":731},[3384],{"type":23,"tag":61,"props":3385,"children":3386},{},[3387],{"type":33,"value":3388},"  - Installing acme/sample-plugin (1.0.0): Cloning 294414deb2 from cache\n",{"type":23,"tag":61,"props":3390,"children":3391},{"class":63,"line":744},[3392],{"type":23,"tag":61,"props":3393,"children":3394},{},[3395],{"type":33,"value":2741},{"type":23,"tag":61,"props":3397,"children":3398},{"class":63,"line":757},[3399],{"type":23,"tag":61,"props":3400,"children":3401},{"emptyLinePlaceholder":787},[3402],{"type":33,"value":790},{"type":23,"tag":61,"props":3404,"children":3405},{"class":63,"line":770},[3406],{"type":23,"tag":61,"props":3407,"children":3408},{},[3409],{"type":33,"value":2756},{"type":23,"tag":61,"props":3411,"children":3412},{"class":63,"line":783},[3413],{"type":23,"tag":61,"props":3414,"children":3415},{"emptyLinePlaceholder":787},[3416],{"type":33,"value":790},{"type":23,"tag":61,"props":3418,"children":3419},{"class":63,"line":793},[3420],{"type":23,"tag":61,"props":3421,"children":3422},{},[3423],{"type":33,"value":2771},{"type":23,"tag":61,"props":3425,"children":3426},{"class":63,"line":806},[3427],{"type":23,"tag":61,"props":3428,"children":3429},{"emptyLinePlaceholder":787},[3430],{"type":33,"value":790},{"type":23,"tag":61,"props":3432,"children":3433},{"class":63,"line":819},[3434],{"type":23,"tag":61,"props":3435,"children":3436},{},[3437],{"type":33,"value":3438},"Using version ^1.0 for acme/sample-plugin\n",{"type":23,"tag":24,"props":3440,"children":3441},{},[3442,3444,3449],{"type":33,"value":3443},"Das ist besser, aber wir verwenden immer noch ",{"type":23,"tag":57,"props":3445,"children":3447},{"className":3446},[],[3448],{"type":33,"value":296},{"type":33,"value":3450},", um das Plugin abzurufen. Wir können es noch besser machen.",{"type":23,"tag":993,"props":3452,"children":3454},{"id":3453},"gitlab-package-registry",[3455],{"type":33,"value":3456},"GitLab Package Registry",{"type":23,"tag":24,"props":3458,"children":3459},{},[3460,3462,3467],{"type":33,"value":3461},"Hier beginnt der GitLab-Teil. Weitere Details sind in der ",{"type":23,"tag":28,"props":3463,"children":3465},{"href":3464},"https://docs.gitlab.com/18.3/user/packages/composer_repository/",[3466],{"type":33,"value":1422},{"type":33,"value":3468}," zu finden.",{"type":23,"tag":24,"props":3470,"children":3471},{},[3472],{"type":33,"value":3473},"An dieser Stelle spielt es keine Rolle, ob unser Projekt öffentlich ist oder nicht, da wir uns ohnehin gegenüber der Package Registry authentifizieren müssen.",{"type":23,"tag":24,"props":3475,"children":3476},{},[3477,3479,3484],{"type":33,"value":3478},"Wir veröffentlichen unseren ",{"type":23,"tag":57,"props":3480,"children":3482},{"className":3481},[],[3483],{"type":33,"value":2805},{"type":33,"value":3485},"-Tag als Composer-Paket.",{"type":23,"tag":43,"props":3487,"children":3489},{"className":2563,"code":3488,"language":2565,"meta":7,"style":7},"curl --fail-with-body --data tag=v1.0.0 \"https://__token__:\u003Cpersonal-access-token>@\u003CDOMAIN-NAME>/api/v4/projects/\u003Cproject_id>/packages/composer\"\n",[3490],{"type":23,"tag":57,"props":3491,"children":3492},{"__ignoreMap":7},[3493],{"type":23,"tag":61,"props":3494,"children":3495},{"class":63,"line":64},[3496,3501,3506,3511,3516],{"type":23,"tag":61,"props":3497,"children":3498},{"style":2575},[3499],{"type":33,"value":3500},"curl",{"type":23,"tag":61,"props":3502,"children":3503},{"style":1844},[3504],{"type":33,"value":3505}," --fail-with-body",{"type":23,"tag":61,"props":3507,"children":3508},{"style":1844},[3509],{"type":33,"value":3510}," --data",{"type":23,"tag":61,"props":3512,"children":3513},{"style":107},[3514],{"type":33,"value":3515}," tag=v1.0.0",{"type":23,"tag":61,"props":3517,"children":3518},{"style":107},[3519],{"type":33,"value":3520}," \"https://__token__:\u003Cpersonal-access-token>@\u003CDOMAIN-NAME>/api/v4/projects/\u003Cproject_id>/packages/composer\"\n",{"type":23,"tag":24,"props":3522,"children":3523},{},[3524],{"type":33,"value":3525},"Nun müssen wir die Repository-Informationen aktualisieren:",{"type":23,"tag":43,"props":3527,"children":3530},{"className":1507,"code":3528,"filename":1509,"highlights":3529,"language":1364,"meta":7,"style":7},"{\n  \"name\": \"shopware/production\",\n  \"license\": \"MIT\",\n  \"type\": \"project\",\n  \"require\": {\n    \"composer-runtime-api\": \"^2.0\",\n    \"acme/sample-plugin\": \"^1.0\",\n    \"shopware/administration\": \"*\",\n    \"shopware/core\": \"6.6.10.2\",\n    \"shopware/elasticsearch\": \"*\",\n    \"shopware/storefront\": \"*\",\n    \"symfony/flex\": \"~2\"\n  },\n  \"repositories\": [\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*/packages/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/static-plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"composer\",\n      \"url\": \"https://\u003CDOMAIN-NAME>/api/v4/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\"\n    }\n  ],\n  \"autoload\": {\n    \"psr-4\": {\n      \"App\\\\\": \"src/\"\n    }\n  },\n  \"prefer-stable\": true,\n  \"config\": {\n    \"allow-plugins\": {\n      \"symfony/flex\": true,\n      \"symfony/runtime\": true\n    },\n    \"optimize-autoloader\": true,\n    \"sort-packages\": true\n  },\n  \"scripts\": {\n    \"auto-scripts\": {\n      \"assets:install\": \"symfony-cmd\"\n    },\n    \"post-install-cmd\": [\n      \"@auto-scripts\"\n    ],\n    \"post-update-cmd\": [\n      \"@auto-scripts\"\n    ]\n  },\n  \"extra\": {\n    \"symfony\": {\n      \"allow-contrib\": true,\n      \"endpoint\": [\n        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\",\n        \"flex://defaults\"\n      ]\n    }\n  }\n}\n",[1511,1512,1513,1514],[3531],{"type":23,"tag":57,"props":3532,"children":3533},{"__ignoreMap":7},[3534,3541,3560,3579,3598,3609,3628,3647,3666,3685,3704,3723,3738,3745,3756,3763,3782,3801,3812,3827,3834,3841,3848,3867,3886,3897,3912,3919,3926,3933,3952,3971,3982,3997,4004,4011,4019,4040,4057,4065,4072,4083,4094,4117,4124,4131,4150,4161,4172,4191,4206,4213,4232,4247,4254,4265,4276,4291,4298,4309,4316,4323,4334,4341,4348,4355,4366,4377,4396,4407,4418,4425,4432,4439,4446],{"type":23,"tag":61,"props":3535,"children":3536},{"class":63,"line":64},[3537],{"type":23,"tag":61,"props":3538,"children":3539},{"style":74},[3540],{"type":33,"value":1526},{"type":23,"tag":61,"props":3542,"children":3543},{"class":63,"line":80},[3544,3548,3552,3556],{"type":23,"tag":61,"props":3545,"children":3546},{"style":1532},[3547],{"type":33,"value":1535},{"type":23,"tag":61,"props":3549,"children":3550},{"style":74},[3551],{"type":33,"value":104},{"type":23,"tag":61,"props":3553,"children":3554},{"style":1542},[3555],{"type":33,"value":1545},{"type":23,"tag":61,"props":3557,"children":3558},{"style":74},[3559],{"type":33,"value":1550},{"type":23,"tag":61,"props":3561,"children":3562},{"class":63,"line":93},[3563,3567,3571,3575],{"type":23,"tag":61,"props":3564,"children":3565},{"style":1532},[3566],{"type":33,"value":1558},{"type":23,"tag":61,"props":3568,"children":3569},{"style":74},[3570],{"type":33,"value":104},{"type":23,"tag":61,"props":3572,"children":3573},{"style":1542},[3574],{"type":33,"value":1567},{"type":23,"tag":61,"props":3576,"children":3577},{"style":74},[3578],{"type":33,"value":1550},{"type":23,"tag":61,"props":3580,"children":3581},{"class":63,"line":113},[3582,3586,3590,3594],{"type":23,"tag":61,"props":3583,"children":3584},{"style":1532},[3585],{"type":33,"value":1579},{"type":23,"tag":61,"props":3587,"children":3588},{"style":74},[3589],{"type":33,"value":104},{"type":23,"tag":61,"props":3591,"children":3592},{"style":1542},[3593],{"type":33,"value":1588},{"type":23,"tag":61,"props":3595,"children":3596},{"style":74},[3597],{"type":33,"value":1550},{"type":23,"tag":61,"props":3599,"children":3600},{"class":63,"line":48},[3601,3605],{"type":23,"tag":61,"props":3602,"children":3603},{"style":1532},[3604],{"type":33,"value":1600},{"type":23,"tag":61,"props":3606,"children":3607},{"style":74},[3608],{"type":33,"value":1605},{"type":23,"tag":61,"props":3610,"children":3611},{"class":63,"line":49},[3612,3616,3620,3624],{"type":23,"tag":61,"props":3613,"children":3614},{"style":1532},[3615],{"type":33,"value":1613},{"type":23,"tag":61,"props":3617,"children":3618},{"style":74},[3619],{"type":33,"value":104},{"type":23,"tag":61,"props":3621,"children":3622},{"style":1542},[3623],{"type":33,"value":1622},{"type":23,"tag":61,"props":3625,"children":3626},{"style":74},[3627],{"type":33,"value":1550},{"type":23,"tag":61,"props":3629,"children":3630},{"class":63,"line":50},[3631,3635,3639,3643],{"type":23,"tag":61,"props":3632,"children":3633},{"style":1532},[3634],{"type":33,"value":1634},{"type":23,"tag":61,"props":3636,"children":3637},{"style":74},[3638],{"type":33,"value":104},{"type":23,"tag":61,"props":3640,"children":3641},{"style":1542},[3642],{"type":33,"value":1643},{"type":23,"tag":61,"props":3644,"children":3645},{"style":74},[3646],{"type":33,"value":1550},{"type":23,"tag":61,"props":3648,"children":3649},{"class":63,"line":51},[3650,3654,3658,3662],{"type":23,"tag":61,"props":3651,"children":3652},{"style":1532},[3653],{"type":33,"value":1655},{"type":23,"tag":61,"props":3655,"children":3656},{"style":74},[3657],{"type":33,"value":104},{"type":23,"tag":61,"props":3659,"children":3660},{"style":1542},[3661],{"type":33,"value":1664},{"type":23,"tag":61,"props":3663,"children":3664},{"style":74},[3665],{"type":33,"value":1550},{"type":23,"tag":61,"props":3667,"children":3668},{"class":63,"line":52},[3669,3673,3677,3681],{"type":23,"tag":61,"props":3670,"children":3671},{"style":1532},[3672],{"type":33,"value":1676},{"type":23,"tag":61,"props":3674,"children":3675},{"style":74},[3676],{"type":33,"value":104},{"type":23,"tag":61,"props":3678,"children":3679},{"style":1542},[3680],{"type":33,"value":1685},{"type":23,"tag":61,"props":3682,"children":3683},{"style":74},[3684],{"type":33,"value":1550},{"type":23,"tag":61,"props":3686,"children":3687},{"class":63,"line":718},[3688,3692,3696,3700],{"type":23,"tag":61,"props":3689,"children":3690},{"style":1532},[3691],{"type":33,"value":1697},{"type":23,"tag":61,"props":3693,"children":3694},{"style":74},[3695],{"type":33,"value":104},{"type":23,"tag":61,"props":3697,"children":3698},{"style":1542},[3699],{"type":33,"value":1664},{"type":23,"tag":61,"props":3701,"children":3702},{"style":74},[3703],{"type":33,"value":1550},{"type":23,"tag":61,"props":3705,"children":3706},{"class":63,"line":731},[3707,3711,3715,3719],{"type":23,"tag":61,"props":3708,"children":3709},{"style":1532},[3710],{"type":33,"value":1717},{"type":23,"tag":61,"props":3712,"children":3713},{"style":74},[3714],{"type":33,"value":104},{"type":23,"tag":61,"props":3716,"children":3717},{"style":1542},[3718],{"type":33,"value":1664},{"type":23,"tag":61,"props":3720,"children":3721},{"style":74},[3722],{"type":33,"value":1550},{"type":23,"tag":61,"props":3724,"children":3725},{"class":63,"line":744},[3726,3730,3734],{"type":23,"tag":61,"props":3727,"children":3728},{"style":1532},[3729],{"type":33,"value":1737},{"type":23,"tag":61,"props":3731,"children":3732},{"style":74},[3733],{"type":33,"value":104},{"type":23,"tag":61,"props":3735,"children":3736},{"style":1542},[3737],{"type":33,"value":1746},{"type":23,"tag":61,"props":3739,"children":3740},{"class":63,"line":757},[3741],{"type":23,"tag":61,"props":3742,"children":3743},{"style":74},[3744],{"type":33,"value":1754},{"type":23,"tag":61,"props":3746,"children":3747},{"class":63,"line":770},[3748,3752],{"type":23,"tag":61,"props":3749,"children":3750},{"style":1532},[3751],{"type":33,"value":1762},{"type":23,"tag":61,"props":3753,"children":3754},{"style":74},[3755],{"type":33,"value":1767},{"type":23,"tag":61,"props":3757,"children":3758},{"class":63,"line":783},[3759],{"type":23,"tag":61,"props":3760,"children":3761},{"style":74},[3762],{"type":33,"value":1775},{"type":23,"tag":61,"props":3764,"children":3765},{"class":63,"line":793},[3766,3770,3774,3778],{"type":23,"tag":61,"props":3767,"children":3768},{"style":1532},[3769],{"type":33,"value":1783},{"type":23,"tag":61,"props":3771,"children":3772},{"style":74},[3773],{"type":33,"value":104},{"type":23,"tag":61,"props":3775,"children":3776},{"style":1542},[3777],{"type":33,"value":1792},{"type":23,"tag":61,"props":3779,"children":3780},{"style":74},[3781],{"type":33,"value":1550},{"type":23,"tag":61,"props":3783,"children":3784},{"class":63,"line":806},[3785,3789,3793,3797],{"type":23,"tag":61,"props":3786,"children":3787},{"style":1532},[3788],{"type":33,"value":1804},{"type":23,"tag":61,"props":3790,"children":3791},{"style":74},[3792],{"type":33,"value":104},{"type":23,"tag":61,"props":3794,"children":3795},{"style":1542},[3796],{"type":33,"value":1813},{"type":23,"tag":61,"props":3798,"children":3799},{"style":74},[3800],{"type":33,"value":1550},{"type":23,"tag":61,"props":3802,"children":3803},{"class":63,"line":819},[3804,3808],{"type":23,"tag":61,"props":3805,"children":3806},{"style":1532},[3807],{"type":33,"value":1825},{"type":23,"tag":61,"props":3809,"children":3810},{"style":74},[3811],{"type":33,"value":1605},{"type":23,"tag":61,"props":3813,"children":3814},{"class":63,"line":828},[3815,3819,3823],{"type":23,"tag":61,"props":3816,"children":3817},{"style":1532},[3818],{"type":33,"value":1837},{"type":23,"tag":61,"props":3820,"children":3821},{"style":74},[3822],{"type":33,"value":104},{"type":23,"tag":61,"props":3824,"children":3825},{"style":1844},[3826],{"type":33,"value":1847},{"type":23,"tag":61,"props":3828,"children":3829},{"class":63,"line":841},[3830],{"type":23,"tag":61,"props":3831,"children":3832},{"style":74},[3833],{"type":33,"value":1855},{"type":23,"tag":61,"props":3835,"children":3836},{"class":63,"line":854},[3837],{"type":23,"tag":61,"props":3838,"children":3839},{"style":74},[3840],{"type":33,"value":1863},{"type":23,"tag":61,"props":3842,"children":3843},{"class":63,"line":867},[3844],{"type":23,"tag":61,"props":3845,"children":3846},{"style":74},[3847],{"type":33,"value":1775},{"type":23,"tag":61,"props":3849,"children":3850},{"class":63,"line":875},[3851,3855,3859,3863],{"type":23,"tag":61,"props":3852,"children":3853},{"style":1532},[3854],{"type":33,"value":1783},{"type":23,"tag":61,"props":3856,"children":3857},{"style":74},[3858],{"type":33,"value":104},{"type":23,"tag":61,"props":3860,"children":3861},{"style":1542},[3862],{"type":33,"value":1792},{"type":23,"tag":61,"props":3864,"children":3865},{"style":74},[3866],{"type":33,"value":1550},{"type":23,"tag":61,"props":3868,"children":3869},{"class":63,"line":888},[3870,3874,3878,3882],{"type":23,"tag":61,"props":3871,"children":3872},{"style":1532},[3873],{"type":33,"value":1804},{"type":23,"tag":61,"props":3875,"children":3876},{"style":74},[3877],{"type":33,"value":104},{"type":23,"tag":61,"props":3879,"children":3880},{"style":1542},[3881],{"type":33,"value":1905},{"type":23,"tag":61,"props":3883,"children":3884},{"style":74},[3885],{"type":33,"value":1550},{"type":23,"tag":61,"props":3887,"children":3888},{"class":63,"line":901},[3889,3893],{"type":23,"tag":61,"props":3890,"children":3891},{"style":1532},[3892],{"type":33,"value":1825},{"type":23,"tag":61,"props":3894,"children":3895},{"style":74},[3896],{"type":33,"value":1605},{"type":23,"tag":61,"props":3898,"children":3899},{"class":63,"line":914},[3900,3904,3908],{"type":23,"tag":61,"props":3901,"children":3902},{"style":1532},[3903],{"type":33,"value":1837},{"type":23,"tag":61,"props":3905,"children":3906},{"style":74},[3907],{"type":33,"value":104},{"type":23,"tag":61,"props":3909,"children":3910},{"style":1844},[3911],{"type":33,"value":1847},{"type":23,"tag":61,"props":3913,"children":3914},{"class":63,"line":927},[3915],{"type":23,"tag":61,"props":3916,"children":3917},{"style":74},[3918],{"type":33,"value":1855},{"type":23,"tag":61,"props":3920,"children":3921},{"class":63,"line":940},[3922],{"type":23,"tag":61,"props":3923,"children":3924},{"style":74},[3925],{"type":33,"value":1863},{"type":23,"tag":61,"props":3927,"children":3928},{"class":63,"line":1952},[3929],{"type":23,"tag":61,"props":3930,"children":3931},{"style":74},[3932],{"type":33,"value":1775},{"type":23,"tag":61,"props":3934,"children":3935},{"class":63,"line":1960},[3936,3940,3944,3948],{"type":23,"tag":61,"props":3937,"children":3938},{"style":1532},[3939],{"type":33,"value":1783},{"type":23,"tag":61,"props":3941,"children":3942},{"style":74},[3943],{"type":33,"value":104},{"type":23,"tag":61,"props":3945,"children":3946},{"style":1542},[3947],{"type":33,"value":1792},{"type":23,"tag":61,"props":3949,"children":3950},{"style":74},[3951],{"type":33,"value":1550},{"type":23,"tag":61,"props":3953,"children":3954},{"class":63,"line":1980},[3955,3959,3963,3967],{"type":23,"tag":61,"props":3956,"children":3957},{"style":1532},[3958],{"type":33,"value":1804},{"type":23,"tag":61,"props":3960,"children":3961},{"style":74},[3962],{"type":33,"value":104},{"type":23,"tag":61,"props":3964,"children":3965},{"style":1542},[3966],{"type":33,"value":1994},{"type":23,"tag":61,"props":3968,"children":3969},{"style":74},[3970],{"type":33,"value":1550},{"type":23,"tag":61,"props":3972,"children":3973},{"class":63,"line":2001},[3974,3978],{"type":23,"tag":61,"props":3975,"children":3976},{"style":1532},[3977],{"type":33,"value":1825},{"type":23,"tag":61,"props":3979,"children":3980},{"style":74},[3981],{"type":33,"value":1605},{"type":23,"tag":61,"props":3983,"children":3984},{"class":63,"line":2013},[3985,3989,3993],{"type":23,"tag":61,"props":3986,"children":3987},{"style":1532},[3988],{"type":33,"value":1837},{"type":23,"tag":61,"props":3990,"children":3991},{"style":74},[3992],{"type":33,"value":104},{"type":23,"tag":61,"props":3994,"children":3995},{"style":1844},[3996],{"type":33,"value":1847},{"type":23,"tag":61,"props":3998,"children":3999},{"class":63,"line":2029},[4000],{"type":23,"tag":61,"props":4001,"children":4002},{"style":74},[4003],{"type":33,"value":1855},{"type":23,"tag":61,"props":4005,"children":4006},{"class":63,"line":2037},[4007],{"type":23,"tag":61,"props":4008,"children":4009},{"style":74},[4010],{"type":33,"value":1863},{"type":23,"tag":61,"props":4012,"children":4014},{"class":4013,"line":1511},[63,127],[4015],{"type":23,"tag":61,"props":4016,"children":4017},{"style":74},[4018],{"type":33,"value":1775},{"type":23,"tag":61,"props":4020,"children":4022},{"class":4021,"line":1512},[63,127],[4023,4027,4031,4036],{"type":23,"tag":61,"props":4024,"children":4025},{"style":1532},[4026],{"type":33,"value":1783},{"type":23,"tag":61,"props":4028,"children":4029},{"style":74},[4030],{"type":33,"value":104},{"type":23,"tag":61,"props":4032,"children":4033},{"style":1542},[4034],{"type":33,"value":4035},"\"composer\"",{"type":23,"tag":61,"props":4037,"children":4038},{"style":74},[4039],{"type":33,"value":1550},{"type":23,"tag":61,"props":4041,"children":4043},{"class":4042,"line":1513},[63,127],[4044,4048,4052],{"type":23,"tag":61,"props":4045,"children":4046},{"style":1532},[4047],{"type":33,"value":1804},{"type":23,"tag":61,"props":4049,"children":4050},{"style":74},[4051],{"type":33,"value":104},{"type":23,"tag":61,"props":4053,"children":4054},{"style":1542},[4055],{"type":33,"value":4056},"\"https://\u003CDOMAIN-NAME>/api/v4/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\"\n",{"type":23,"tag":61,"props":4058,"children":4060},{"class":4059,"line":1514},[63,127],[4061],{"type":23,"tag":61,"props":4062,"children":4063},{"style":74},[4064],{"type":33,"value":2097},{"type":23,"tag":61,"props":4066,"children":4067},{"class":63,"line":2100},[4068],{"type":23,"tag":61,"props":4069,"children":4070},{"style":74},[4071],{"type":33,"value":2106},{"type":23,"tag":61,"props":4073,"children":4074},{"class":63,"line":2109},[4075,4079],{"type":23,"tag":61,"props":4076,"children":4077},{"style":1532},[4078],{"type":33,"value":2115},{"type":23,"tag":61,"props":4080,"children":4081},{"style":74},[4082],{"type":33,"value":1605},{"type":23,"tag":61,"props":4084,"children":4085},{"class":63,"line":2122},[4086,4090],{"type":23,"tag":61,"props":4087,"children":4088},{"style":1532},[4089],{"type":33,"value":2128},{"type":23,"tag":61,"props":4091,"children":4092},{"style":74},[4093],{"type":33,"value":1605},{"type":23,"tag":61,"props":4095,"children":4096},{"class":63,"line":2135},[4097,4101,4105,4109,4113],{"type":23,"tag":61,"props":4098,"children":4099},{"style":1532},[4100],{"type":33,"value":2141},{"type":23,"tag":61,"props":4102,"children":4103},{"style":2144},[4104],{"type":33,"value":2147},{"type":23,"tag":61,"props":4106,"children":4107},{"style":1532},[4108],{"type":33,"value":2152},{"type":23,"tag":61,"props":4110,"children":4111},{"style":74},[4112],{"type":33,"value":104},{"type":23,"tag":61,"props":4114,"children":4115},{"style":1542},[4116],{"type":33,"value":2161},{"type":23,"tag":61,"props":4118,"children":4119},{"class":63,"line":2164},[4120],{"type":23,"tag":61,"props":4121,"children":4122},{"style":74},[4123],{"type":33,"value":2097},{"type":23,"tag":61,"props":4125,"children":4126},{"class":63,"line":2172},[4127],{"type":23,"tag":61,"props":4128,"children":4129},{"style":74},[4130],{"type":33,"value":1754},{"type":23,"tag":61,"props":4132,"children":4133},{"class":63,"line":2180},[4134,4138,4142,4146],{"type":23,"tag":61,"props":4135,"children":4136},{"style":1532},[4137],{"type":33,"value":2186},{"type":23,"tag":61,"props":4139,"children":4140},{"style":74},[4141],{"type":33,"value":104},{"type":23,"tag":61,"props":4143,"children":4144},{"style":1844},[4145],{"type":33,"value":2195},{"type":23,"tag":61,"props":4147,"children":4148},{"style":74},[4149],{"type":33,"value":1550},{"type":23,"tag":61,"props":4151,"children":4152},{"class":63,"line":2202},[4153,4157],{"type":23,"tag":61,"props":4154,"children":4155},{"style":1532},[4156],{"type":33,"value":2208},{"type":23,"tag":61,"props":4158,"children":4159},{"style":74},[4160],{"type":33,"value":1605},{"type":23,"tag":61,"props":4162,"children":4163},{"class":63,"line":2215},[4164,4168],{"type":23,"tag":61,"props":4165,"children":4166},{"style":1532},[4167],{"type":33,"value":2221},{"type":23,"tag":61,"props":4169,"children":4170},{"style":74},[4171],{"type":33,"value":1605},{"type":23,"tag":61,"props":4173,"children":4174},{"class":63,"line":2228},[4175,4179,4183,4187],{"type":23,"tag":61,"props":4176,"children":4177},{"style":1532},[4178],{"type":33,"value":2234},{"type":23,"tag":61,"props":4180,"children":4181},{"style":74},[4182],{"type":33,"value":104},{"type":23,"tag":61,"props":4184,"children":4185},{"style":1844},[4186],{"type":33,"value":2195},{"type":23,"tag":61,"props":4188,"children":4189},{"style":74},[4190],{"type":33,"value":1550},{"type":23,"tag":61,"props":4192,"children":4193},{"class":63,"line":2249},[4194,4198,4202],{"type":23,"tag":61,"props":4195,"children":4196},{"style":1532},[4197],{"type":33,"value":2255},{"type":23,"tag":61,"props":4199,"children":4200},{"style":74},[4201],{"type":33,"value":104},{"type":23,"tag":61,"props":4203,"children":4204},{"style":1844},[4205],{"type":33,"value":1847},{"type":23,"tag":61,"props":4207,"children":4208},{"class":63,"line":2266},[4209],{"type":23,"tag":61,"props":4210,"children":4211},{"style":74},[4212],{"type":33,"value":1863},{"type":23,"tag":61,"props":4214,"children":4215},{"class":63,"line":2274},[4216,4220,4224,4228],{"type":23,"tag":61,"props":4217,"children":4218},{"style":1532},[4219],{"type":33,"value":2280},{"type":23,"tag":61,"props":4221,"children":4222},{"style":74},[4223],{"type":33,"value":104},{"type":23,"tag":61,"props":4225,"children":4226},{"style":1844},[4227],{"type":33,"value":2195},{"type":23,"tag":61,"props":4229,"children":4230},{"style":74},[4231],{"type":33,"value":1550},{"type":23,"tag":61,"props":4233,"children":4234},{"class":63,"line":2295},[4235,4239,4243],{"type":23,"tag":61,"props":4236,"children":4237},{"style":1532},[4238],{"type":33,"value":2301},{"type":23,"tag":61,"props":4240,"children":4241},{"style":74},[4242],{"type":33,"value":104},{"type":23,"tag":61,"props":4244,"children":4245},{"style":1844},[4246],{"type":33,"value":1847},{"type":23,"tag":61,"props":4248,"children":4249},{"class":63,"line":2312},[4250],{"type":23,"tag":61,"props":4251,"children":4252},{"style":74},[4253],{"type":33,"value":1754},{"type":23,"tag":61,"props":4255,"children":4256},{"class":63,"line":2320},[4257,4261],{"type":23,"tag":61,"props":4258,"children":4259},{"style":1532},[4260],{"type":33,"value":2326},{"type":23,"tag":61,"props":4262,"children":4263},{"style":74},[4264],{"type":33,"value":1605},{"type":23,"tag":61,"props":4266,"children":4267},{"class":63,"line":2333},[4268,4272],{"type":23,"tag":61,"props":4269,"children":4270},{"style":1532},[4271],{"type":33,"value":2339},{"type":23,"tag":61,"props":4273,"children":4274},{"style":74},[4275],{"type":33,"value":1605},{"type":23,"tag":61,"props":4277,"children":4278},{"class":63,"line":2346},[4279,4283,4287],{"type":23,"tag":61,"props":4280,"children":4281},{"style":1532},[4282],{"type":33,"value":2352},{"type":23,"tag":61,"props":4284,"children":4285},{"style":74},[4286],{"type":33,"value":104},{"type":23,"tag":61,"props":4288,"children":4289},{"style":1542},[4290],{"type":33,"value":2361},{"type":23,"tag":61,"props":4292,"children":4293},{"class":63,"line":2364},[4294],{"type":23,"tag":61,"props":4295,"children":4296},{"style":74},[4297],{"type":33,"value":1863},{"type":23,"tag":61,"props":4299,"children":4300},{"class":63,"line":2372},[4301,4305],{"type":23,"tag":61,"props":4302,"children":4303},{"style":1532},[4304],{"type":33,"value":2378},{"type":23,"tag":61,"props":4306,"children":4307},{"style":74},[4308],{"type":33,"value":1767},{"type":23,"tag":61,"props":4310,"children":4311},{"class":63,"line":2385},[4312],{"type":23,"tag":61,"props":4313,"children":4314},{"style":1542},[4315],{"type":33,"value":2391},{"type":23,"tag":61,"props":4317,"children":4318},{"class":63,"line":2394},[4319],{"type":23,"tag":61,"props":4320,"children":4321},{"style":74},[4322],{"type":33,"value":2400},{"type":23,"tag":61,"props":4324,"children":4325},{"class":63,"line":2403},[4326,4330],{"type":23,"tag":61,"props":4327,"children":4328},{"style":1532},[4329],{"type":33,"value":2409},{"type":23,"tag":61,"props":4331,"children":4332},{"style":74},[4333],{"type":33,"value":1767},{"type":23,"tag":61,"props":4335,"children":4336},{"class":63,"line":2416},[4337],{"type":23,"tag":61,"props":4338,"children":4339},{"style":1542},[4340],{"type":33,"value":2391},{"type":23,"tag":61,"props":4342,"children":4343},{"class":63,"line":2424},[4344],{"type":23,"tag":61,"props":4345,"children":4346},{"style":74},[4347],{"type":33,"value":2430},{"type":23,"tag":61,"props":4349,"children":4350},{"class":63,"line":2433},[4351],{"type":23,"tag":61,"props":4352,"children":4353},{"style":74},[4354],{"type":33,"value":1754},{"type":23,"tag":61,"props":4356,"children":4357},{"class":63,"line":2441},[4358,4362],{"type":23,"tag":61,"props":4359,"children":4360},{"style":1532},[4361],{"type":33,"value":2447},{"type":23,"tag":61,"props":4363,"children":4364},{"style":74},[4365],{"type":33,"value":1605},{"type":23,"tag":61,"props":4367,"children":4368},{"class":63,"line":2454},[4369,4373],{"type":23,"tag":61,"props":4370,"children":4371},{"style":1532},[4372],{"type":33,"value":2460},{"type":23,"tag":61,"props":4374,"children":4375},{"style":74},[4376],{"type":33,"value":1605},{"type":23,"tag":61,"props":4378,"children":4379},{"class":63,"line":2467},[4380,4384,4388,4392],{"type":23,"tag":61,"props":4381,"children":4382},{"style":1532},[4383],{"type":33,"value":2473},{"type":23,"tag":61,"props":4385,"children":4386},{"style":74},[4387],{"type":33,"value":104},{"type":23,"tag":61,"props":4389,"children":4390},{"style":1844},[4391],{"type":33,"value":2195},{"type":23,"tag":61,"props":4393,"children":4394},{"style":74},[4395],{"type":33,"value":1550},{"type":23,"tag":61,"props":4397,"children":4398},{"class":63,"line":2488},[4399,4403],{"type":23,"tag":61,"props":4400,"children":4401},{"style":1532},[4402],{"type":33,"value":2494},{"type":23,"tag":61,"props":4404,"children":4405},{"style":74},[4406],{"type":33,"value":1767},{"type":23,"tag":61,"props":4408,"children":4409},{"class":63,"line":2501},[4410,4414],{"type":23,"tag":61,"props":4411,"children":4412},{"style":1542},[4413],{"type":33,"value":2507},{"type":23,"tag":61,"props":4415,"children":4416},{"style":74},[4417],{"type":33,"value":1550},{"type":23,"tag":61,"props":4419,"children":4420},{"class":63,"line":2514},[4421],{"type":23,"tag":61,"props":4422,"children":4423},{"style":1542},[4424],{"type":33,"value":2520},{"type":23,"tag":61,"props":4426,"children":4427},{"class":63,"line":2523},[4428],{"type":23,"tag":61,"props":4429,"children":4430},{"style":74},[4431],{"type":33,"value":2529},{"type":23,"tag":61,"props":4433,"children":4434},{"class":63,"line":2532},[4435],{"type":23,"tag":61,"props":4436,"children":4437},{"style":74},[4438],{"type":33,"value":2097},{"type":23,"tag":61,"props":4440,"children":4441},{"class":63,"line":2540},[4442],{"type":23,"tag":61,"props":4443,"children":4444},{"style":74},[4445],{"type":33,"value":2546},{"type":23,"tag":61,"props":4447,"children":4448},{"class":63,"line":2549},[4449],{"type":23,"tag":61,"props":4450,"children":4451},{"style":74},[4452],{"type":33,"value":2555},{"type":23,"tag":24,"props":4454,"children":4455},{},[4456],{"type":33,"value":4457},"oder über das CLI:",{"type":23,"tag":43,"props":4459,"children":4461},{"className":2563,"code":4460,"language":2565,"meta":7,"style":7},"composer config repositories.\u003Cgroup_id> composer https://\u003CDOMAIN-NAME>/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\n",[4462],{"type":23,"tag":57,"props":4463,"children":4464},{"__ignoreMap":7},[4465],{"type":23,"tag":61,"props":4466,"children":4467},{"class":63,"line":64},[4468,4472,4477,4482,4488,4493,4498,4503,4508,4513,4517,4522,4527,4531,4536,4540,4544,4548,4552],{"type":23,"tag":61,"props":4469,"children":4470},{"style":2575},[4471],{"type":33,"value":1502},{"type":23,"tag":61,"props":4473,"children":4474},{"style":107},[4475],{"type":33,"value":4476}," config",{"type":23,"tag":61,"props":4478,"children":4479},{"style":107},[4480],{"type":33,"value":4481}," repositories.",{"type":23,"tag":61,"props":4483,"children":4485},{"style":4484},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[4486],{"type":33,"value":4487},"\u003C",{"type":23,"tag":61,"props":4489,"children":4490},{"style":107},[4491],{"type":33,"value":4492},"group_i",{"type":23,"tag":61,"props":4494,"children":4495},{"style":74},[4496],{"type":33,"value":4497},"d",{"type":23,"tag":61,"props":4499,"children":4500},{"style":4484},[4501],{"type":33,"value":4502},">",{"type":23,"tag":61,"props":4504,"children":4505},{"style":107},[4506],{"type":33,"value":4507}," composer",{"type":23,"tag":61,"props":4509,"children":4510},{"style":107},[4511],{"type":33,"value":4512}," https://",{"type":23,"tag":61,"props":4514,"children":4515},{"style":4484},[4516],{"type":33,"value":4487},{"type":23,"tag":61,"props":4518,"children":4519},{"style":107},[4520],{"type":33,"value":4521},"DOMAIN-NAM",{"type":23,"tag":61,"props":4523,"children":4524},{"style":74},[4525],{"type":33,"value":4526},"E",{"type":23,"tag":61,"props":4528,"children":4529},{"style":4484},[4530],{"type":33,"value":4502},{"type":23,"tag":61,"props":4532,"children":4533},{"style":107},[4534],{"type":33,"value":4535},"/api/v4/group/",{"type":23,"tag":61,"props":4537,"children":4538},{"style":4484},[4539],{"type":33,"value":4487},{"type":23,"tag":61,"props":4541,"children":4542},{"style":107},[4543],{"type":33,"value":4492},{"type":23,"tag":61,"props":4545,"children":4546},{"style":74},[4547],{"type":33,"value":4497},{"type":23,"tag":61,"props":4549,"children":4550},{"style":4484},[4551],{"type":33,"value":4502},{"type":23,"tag":61,"props":4553,"children":4554},{"style":107},[4555],{"type":33,"value":4556},"/-/packages/composer/packages.json\n",{"type":23,"tag":24,"props":4558,"children":4559},{},[4560],{"type":33,"value":4561},"Und die GitLab-Anmeldeinformationen einrichten:",{"type":23,"tag":43,"props":4563,"children":4565},{"className":2563,"code":4564,"language":2565,"meta":7,"style":7},"composer config gitlab-token.\u003CDOMAIN-NAME> \u003Cpersonal_access_token>\n",[4566],{"type":23,"tag":57,"props":4567,"children":4568},{"__ignoreMap":7},[4569],{"type":23,"tag":61,"props":4570,"children":4571},{"class":63,"line":64},[4572,4576,4580,4585,4589,4593,4597,4601,4606,4611,4616],{"type":23,"tag":61,"props":4573,"children":4574},{"style":2575},[4575],{"type":33,"value":1502},{"type":23,"tag":61,"props":4577,"children":4578},{"style":107},[4579],{"type":33,"value":4476},{"type":23,"tag":61,"props":4581,"children":4582},{"style":107},[4583],{"type":33,"value":4584}," gitlab-token.",{"type":23,"tag":61,"props":4586,"children":4587},{"style":4484},[4588],{"type":33,"value":4487},{"type":23,"tag":61,"props":4590,"children":4591},{"style":107},[4592],{"type":33,"value":4521},{"type":23,"tag":61,"props":4594,"children":4595},{"style":74},[4596],{"type":33,"value":4526},{"type":23,"tag":61,"props":4598,"children":4599},{"style":4484},[4600],{"type":33,"value":4502},{"type":23,"tag":61,"props":4602,"children":4603},{"style":4484},[4604],{"type":33,"value":4605}," \u003C",{"type":23,"tag":61,"props":4607,"children":4608},{"style":107},[4609],{"type":33,"value":4610},"personal_access_toke",{"type":23,"tag":61,"props":4612,"children":4613},{"style":74},[4614],{"type":33,"value":4615},"n",{"type":23,"tag":61,"props":4617,"children":4618},{"style":4484},[4619],{"type":33,"value":4620},">\n",{"type":23,"tag":24,"props":4622,"children":4623},{},[4624,4626,4631],{"type":33,"value":4625},"Mehr über diesen Prozess in der ",{"type":23,"tag":28,"props":4627,"children":4629},{"href":4628},"https://docs.gitlab.com/user/packages/composer_repository/#install-a-composer-package",[4630],{"type":33,"value":1422},{"type":33,"value":3468},{"type":23,"tag":24,"props":4633,"children":4634},{},[4635],{"type":33,"value":4636},"Jetzt installieren wir unser Paket wie gewohnt:",{"type":23,"tag":43,"props":4638,"children":4639},{"className":2563,"code":2564,"language":2565,"meta":7,"style":7},[4640],{"type":23,"tag":57,"props":4641,"children":4642},{"__ignoreMap":7},[4643],{"type":23,"tag":61,"props":4644,"children":4645},{"class":63,"line":64},[4646,4650,4654],{"type":23,"tag":61,"props":4647,"children":4648},{"style":2575},[4649],{"type":33,"value":1502},{"type":23,"tag":61,"props":4651,"children":4652},{"style":107},[4653],{"type":33,"value":2582},{"type":23,"tag":61,"props":4655,"children":4656},{"style":107},[4657],{"type":33,"value":2587},{"type":23,"tag":43,"props":4659,"children":4661},{"className":3299,"code":4660,"language":3301,"meta":7,"style":7},"./composer.json has been updated\nRunning composer update acme/sample-plugin\nLoading composer repositories with package information\nUpdating dependencies\nLock file operations: 1 install, 0 updates, 0 removals\n  - Locking acme/sample-plugin (1.0.0)\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nPackage operations: 1 install, 0 updates, 0 removals\n  - Downloading acme/sample-plugin (1.0.0)\n  - Installing acme/sample-plugin (1.0.0): Extracting archive\nGenerating optimized autoload files\n\nRun composer recipes at any time to see the status of your Symfony recipes.\n\nExecuting script assets:install [OK]\n\nUsing version ^1.0 for acme/sample-plugin\n",[4662],{"type":23,"tag":57,"props":4663,"children":4664},{"__ignoreMap":7},[4665,4672,4679,4686,4693,4700,4707,4714,4721,4728,4736,4744,4751,4758,4765,4772,4779,4786],{"type":23,"tag":61,"props":4666,"children":4667},{"class":63,"line":64},[4668],{"type":23,"tag":61,"props":4669,"children":4670},{},[4671],{"type":33,"value":2653},{"type":23,"tag":61,"props":4673,"children":4674},{"class":63,"line":80},[4675],{"type":23,"tag":61,"props":4676,"children":4677},{},[4678],{"type":33,"value":2661},{"type":23,"tag":61,"props":4680,"children":4681},{"class":63,"line":93},[4682],{"type":23,"tag":61,"props":4683,"children":4684},{},[4685],{"type":33,"value":3328},{"type":23,"tag":61,"props":4687,"children":4688},{"class":63,"line":113},[4689],{"type":23,"tag":61,"props":4690,"children":4691},{},[4692],{"type":33,"value":3336},{"type":23,"tag":61,"props":4694,"children":4695},{"class":63,"line":48},[4696],{"type":23,"tag":61,"props":4697,"children":4698},{},[4699],{"type":33,"value":2685},{"type":23,"tag":61,"props":4701,"children":4702},{"class":63,"line":49},[4703],{"type":23,"tag":61,"props":4704,"children":4705},{},[4706],{"type":33,"value":3351},{"type":23,"tag":61,"props":4708,"children":4709},{"class":63,"line":50},[4710],{"type":23,"tag":61,"props":4711,"children":4712},{},[4713],{"type":33,"value":2701},{"type":23,"tag":61,"props":4715,"children":4716},{"class":63,"line":51},[4717],{"type":23,"tag":61,"props":4718,"children":4719},{},[4720],{"type":33,"value":2709},{"type":23,"tag":61,"props":4722,"children":4723},{"class":63,"line":52},[4724],{"type":23,"tag":61,"props":4725,"children":4726},{},[4727],{"type":33,"value":2717},{"type":23,"tag":61,"props":4729,"children":4730},{"class":63,"line":718},[4731],{"type":23,"tag":61,"props":4732,"children":4733},{},[4734],{"type":33,"value":4735},"  - Downloading acme/sample-plugin (1.0.0)\n",{"type":23,"tag":61,"props":4737,"children":4738},{"class":63,"line":731},[4739],{"type":23,"tag":61,"props":4740,"children":4741},{},[4742],{"type":33,"value":4743},"  - Installing acme/sample-plugin (1.0.0): Extracting archive\n",{"type":23,"tag":61,"props":4745,"children":4746},{"class":63,"line":744},[4747],{"type":23,"tag":61,"props":4748,"children":4749},{},[4750],{"type":33,"value":2741},{"type":23,"tag":61,"props":4752,"children":4753},{"class":63,"line":757},[4754],{"type":23,"tag":61,"props":4755,"children":4756},{"emptyLinePlaceholder":787},[4757],{"type":33,"value":790},{"type":23,"tag":61,"props":4759,"children":4760},{"class":63,"line":770},[4761],{"type":23,"tag":61,"props":4762,"children":4763},{},[4764],{"type":33,"value":2756},{"type":23,"tag":61,"props":4766,"children":4767},{"class":63,"line":783},[4768],{"type":23,"tag":61,"props":4769,"children":4770},{"emptyLinePlaceholder":787},[4771],{"type":33,"value":790},{"type":23,"tag":61,"props":4773,"children":4774},{"class":63,"line":793},[4775],{"type":23,"tag":61,"props":4776,"children":4777},{},[4778],{"type":33,"value":2771},{"type":23,"tag":61,"props":4780,"children":4781},{"class":63,"line":806},[4782],{"type":23,"tag":61,"props":4783,"children":4784},{"emptyLinePlaceholder":787},[4785],{"type":33,"value":790},{"type":23,"tag":61,"props":4787,"children":4788},{"class":63,"line":819},[4789],{"type":23,"tag":61,"props":4790,"children":4791},{},[4792],{"type":33,"value":3438},{"type":23,"tag":24,"props":4794,"children":4795},{},[4796],{"type":23,"tag":61,"props":4797,"children":4800},{"className":4798},[4799],"text-h2",[4801],{"type":33,"value":4802},"Großartig. Direkter Paket-Download!",{"type":23,"tag":993,"props":4804,"children":4806},{"id":4805},"warum-die-mühe",[4807],{"type":33,"value":4808},"Warum die Mühe?",{"type":23,"tag":24,"props":4810,"children":4811},{},[4812,4814,4819,4821,4827],{"type":33,"value":4813},"Das ist eine sehr gute Frage. Der Hauptgrund ist das Paket-Caching. Bei der Ausführung in einer ",{"type":23,"tag":57,"props":4815,"children":4817},{"className":4816},[],[4818],{"type":33,"value":1331},{"type":33,"value":4820},"-Umgebung oder einem ",{"type":23,"tag":57,"props":4822,"children":4824},{"className":4823},[],[4825],{"type":33,"value":4826},"docker build",{"type":33,"value":4828}," kann das Caching von Paketen einen massiven Leistungsschub bewirken.",{"type":23,"tag":1062,"props":4830,"children":4831},{},[],{"type":23,"tag":578,"props":4833,"children":4834},{},[],{"type":23,"tag":272,"props":4836,"children":4838},{"id":4837},"release-pipeline",[4839],{"type":33,"value":4840},"Release-Pipeline",{"type":23,"tag":993,"props":4842,"children":4844},{"id":4843},"mit-manuellem-tagging",[4845],{"type":33,"value":4846},"Mit manuellem Tagging",{"type":23,"tag":24,"props":4848,"children":4849},{},[4850],{"type":33,"value":4851},"Dies ist eine einfache Pipeline, in der ein Git-Tag manuell erstellt und pushen wird.",{"type":23,"tag":24,"props":4853,"children":4854},{},[4855,4857,4862,4863,4868],{"type":33,"value":4856},"Bitte sicherstellen, dass Sie die ",{"type":23,"tag":57,"props":4858,"children":4860},{"className":4859},[],[4861],{"type":33,"value":2817},{"type":33,"value":2819},{"type":23,"tag":57,"props":4864,"children":4866},{"className":4865},[],[4867],{"type":33,"value":2825},{"type":33,"value":4869}," immer aktualisiert wird.",{"type":23,"tag":43,"props":4871,"children":4873},{"className":2563,"code":4872,"language":2565,"meta":7,"style":7},"git tag \u003Cversion>\ngit push --tags\n",[4874],{"type":23,"tag":57,"props":4875,"children":4876},{"__ignoreMap":7},[4877,4905],{"type":23,"tag":61,"props":4878,"children":4879},{"class":63,"line":64},[4880,4884,4888,4892,4897,4901],{"type":23,"tag":61,"props":4881,"children":4882},{"style":2575},[4883],{"type":33,"value":296},{"type":23,"tag":61,"props":4885,"children":4886},{"style":107},[4887],{"type":33,"value":3248},{"type":23,"tag":61,"props":4889,"children":4890},{"style":4484},[4891],{"type":33,"value":4605},{"type":23,"tag":61,"props":4893,"children":4894},{"style":107},[4895],{"type":33,"value":4896},"versio",{"type":23,"tag":61,"props":4898,"children":4899},{"style":74},[4900],{"type":33,"value":4615},{"type":23,"tag":61,"props":4902,"children":4903},{"style":4484},[4904],{"type":33,"value":4620},{"type":23,"tag":61,"props":4906,"children":4907},{"class":63,"line":80},[4908,4912,4916],{"type":23,"tag":61,"props":4909,"children":4910},{"style":2575},[4911],{"type":33,"value":296},{"type":23,"tag":61,"props":4913,"children":4914},{"style":107},[4915],{"type":33,"value":3265},{"type":23,"tag":61,"props":4917,"children":4918},{"style":1844},[4919],{"type":33,"value":3270},{"type":23,"tag":43,"props":4921,"children":4924},{"className":54,"code":4922,"filename":4923,"language":53,"meta":7,"style":7},"stages:\n  - release\n\ndeploy:\n  image: alpine/curl\n  stage: release\n  script:\n    - 'curl --fail-with-body --header \"Job-Token: $CI_JOB_TOKEN\" --data tag=$CI_COMMIT_TAG \"${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/composer\"'\n  environment: production\n  rules:\n    if: $CI_COMMIT_TAG\n",".gitlab-ci.yml",[4925],{"type":23,"tag":57,"props":4926,"children":4927},{"__ignoreMap":7},[4928,4940,4953,4960,4972,4989,5005,5017,5030,5047,5059],{"type":23,"tag":61,"props":4929,"children":4930},{"class":63,"line":64},[4931,4936],{"type":23,"tag":61,"props":4932,"children":4933},{"style":68},[4934],{"type":33,"value":4935},"stages",{"type":23,"tag":61,"props":4937,"children":4938},{"style":74},[4939],{"type":33,"value":77},{"type":23,"tag":61,"props":4941,"children":4942},{"class":63,"line":80},[4943,4948],{"type":23,"tag":61,"props":4944,"children":4945},{"style":74},[4946],{"type":33,"value":4947},"  - ",{"type":23,"tag":61,"props":4949,"children":4950},{"style":107},[4951],{"type":33,"value":4952},"release\n",{"type":23,"tag":61,"props":4954,"children":4955},{"class":63,"line":93},[4956],{"type":23,"tag":61,"props":4957,"children":4958},{"emptyLinePlaceholder":787},[4959],{"type":33,"value":790},{"type":23,"tag":61,"props":4961,"children":4962},{"class":63,"line":113},[4963,4968],{"type":23,"tag":61,"props":4964,"children":4965},{"style":68},[4966],{"type":33,"value":4967},"deploy",{"type":23,"tag":61,"props":4969,"children":4970},{"style":74},[4971],{"type":33,"value":77},{"type":23,"tag":61,"props":4973,"children":4974},{"class":63,"line":48},[4975,4980,4984],{"type":23,"tag":61,"props":4976,"children":4977},{"style":68},[4978],{"type":33,"value":4979},"  image",{"type":23,"tag":61,"props":4981,"children":4982},{"style":74},[4983],{"type":33,"value":104},{"type":23,"tag":61,"props":4985,"children":4986},{"style":107},[4987],{"type":33,"value":4988},"alpine/curl\n",{"type":23,"tag":61,"props":4990,"children":4991},{"class":63,"line":49},[4992,4997,5001],{"type":23,"tag":61,"props":4993,"children":4994},{"style":68},[4995],{"type":33,"value":4996},"  stage",{"type":23,"tag":61,"props":4998,"children":4999},{"style":74},[5000],{"type":33,"value":104},{"type":23,"tag":61,"props":5002,"children":5003},{"style":107},[5004],{"type":33,"value":4952},{"type":23,"tag":61,"props":5006,"children":5007},{"class":63,"line":50},[5008,5013],{"type":23,"tag":61,"props":5009,"children":5010},{"style":68},[5011],{"type":33,"value":5012},"  script",{"type":23,"tag":61,"props":5014,"children":5015},{"style":74},[5016],{"type":33,"value":77},{"type":23,"tag":61,"props":5018,"children":5019},{"class":63,"line":51},[5020,5025],{"type":23,"tag":61,"props":5021,"children":5022},{"style":74},[5023],{"type":33,"value":5024},"    - ",{"type":23,"tag":61,"props":5026,"children":5027},{"style":107},[5028],{"type":33,"value":5029},"'curl --fail-with-body --header \"Job-Token: $CI_JOB_TOKEN\" --data tag=$CI_COMMIT_TAG \"${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/composer\"'\n",{"type":23,"tag":61,"props":5031,"children":5032},{"class":63,"line":52},[5033,5038,5042],{"type":23,"tag":61,"props":5034,"children":5035},{"style":68},[5036],{"type":33,"value":5037},"  environment",{"type":23,"tag":61,"props":5039,"children":5040},{"style":74},[5041],{"type":33,"value":104},{"type":23,"tag":61,"props":5043,"children":5044},{"style":107},[5045],{"type":33,"value":5046},"production\n",{"type":23,"tag":61,"props":5048,"children":5049},{"class":63,"line":718},[5050,5055],{"type":23,"tag":61,"props":5051,"children":5052},{"style":68},[5053],{"type":33,"value":5054},"  rules",{"type":23,"tag":61,"props":5056,"children":5057},{"style":74},[5058],{"type":33,"value":77},{"type":23,"tag":61,"props":5060,"children":5061},{"class":63,"line":731},[5062,5067,5071],{"type":23,"tag":61,"props":5063,"children":5064},{"style":68},[5065],{"type":33,"value":5066},"    if",{"type":23,"tag":61,"props":5068,"children":5069},{"style":74},[5070],{"type":33,"value":104},{"type":23,"tag":61,"props":5072,"children":5073},{"style":107},[5074],{"type":33,"value":5075},"$CI_COMMIT_TAG\n",{"type":23,"tag":993,"props":5077,"children":5079},{"id":5078},"mit-semantic-release",[5080],{"type":33,"value":5081},"Mit semantic-release",{"type":23,"tag":24,"props":5083,"children":5084},{},[5085],{"type":33,"value":5086},"Es wäre viel einfacher, wenn wir unsere Änderungen einfach pushen könnten und uns nicht um Versionierung und Tagging kümmern müssten.",{"type":23,"tag":24,"props":5088,"children":5089},{},[5090,5096],{"type":23,"tag":28,"props":5091,"children":5093},{"href":5092},"https://github.com/semantic-release/semantic-release",[5094],{"type":33,"value":5095},"semantic-release",{"type":33,"value":5097}," automatisiert den gesamten Workflow für Paket-Releases.",{"type":23,"tag":24,"props":5099,"children":5100},{},[5101,5103,5109],{"type":33,"value":5102},"Bitte befolgen Sie der ",{"type":23,"tag":28,"props":5104,"children":5106},{"href":5105},"https://github.com/semantic-release/gitlab?tab=readme-ov-file#gitlab-authentication",[5107],{"type":33,"value":5108},"Anleitung zur GitLab-Authentifizierung",{"type":33,"value":5110},", bevor Sie weiterlesen.",{"type":23,"tag":43,"props":5112,"children":5115},{"className":54,"code":5113,"filename":5114,"language":53,"meta":7,"style":7},"stages:\n  - release\n\nrelease:\n  stage: release\n  image:\n    name: ghcr.io/voxpupuli/semantic-release:25.0.0-latest\n    entrypoint: [\"\"]\n  interruptible: true\n  script:\n    - /container-entrypoint.sh\n  rules:\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n\n","\u003Cplugin-root>/.gitlab-ci.yml",[5116],{"type":23,"tag":57,"props":5117,"children":5118},{"__ignoreMap":7},[5119,5130,5141,5148,5160,5175,5186,5203,5226,5242,5253,5265,5276,5297,5314],{"type":23,"tag":61,"props":5120,"children":5121},{"class":63,"line":64},[5122,5126],{"type":23,"tag":61,"props":5123,"children":5124},{"style":68},[5125],{"type":33,"value":4935},{"type":23,"tag":61,"props":5127,"children":5128},{"style":74},[5129],{"type":33,"value":77},{"type":23,"tag":61,"props":5131,"children":5132},{"class":63,"line":80},[5133,5137],{"type":23,"tag":61,"props":5134,"children":5135},{"style":74},[5136],{"type":33,"value":4947},{"type":23,"tag":61,"props":5138,"children":5139},{"style":107},[5140],{"type":33,"value":4952},{"type":23,"tag":61,"props":5142,"children":5143},{"class":63,"line":93},[5144],{"type":23,"tag":61,"props":5145,"children":5146},{"emptyLinePlaceholder":787},[5147],{"type":33,"value":790},{"type":23,"tag":61,"props":5149,"children":5150},{"class":63,"line":113},[5151,5156],{"type":23,"tag":61,"props":5152,"children":5153},{"style":68},[5154],{"type":33,"value":5155},"release",{"type":23,"tag":61,"props":5157,"children":5158},{"style":74},[5159],{"type":33,"value":77},{"type":23,"tag":61,"props":5161,"children":5162},{"class":63,"line":48},[5163,5167,5171],{"type":23,"tag":61,"props":5164,"children":5165},{"style":68},[5166],{"type":33,"value":4996},{"type":23,"tag":61,"props":5168,"children":5169},{"style":74},[5170],{"type":33,"value":104},{"type":23,"tag":61,"props":5172,"children":5173},{"style":107},[5174],{"type":33,"value":4952},{"type":23,"tag":61,"props":5176,"children":5177},{"class":63,"line":49},[5178,5182],{"type":23,"tag":61,"props":5179,"children":5180},{"style":68},[5181],{"type":33,"value":4979},{"type":23,"tag":61,"props":5183,"children":5184},{"style":74},[5185],{"type":33,"value":77},{"type":23,"tag":61,"props":5187,"children":5188},{"class":63,"line":50},[5189,5194,5198],{"type":23,"tag":61,"props":5190,"children":5191},{"style":68},[5192],{"type":33,"value":5193},"    name",{"type":23,"tag":61,"props":5195,"children":5196},{"style":74},[5197],{"type":33,"value":104},{"type":23,"tag":61,"props":5199,"children":5200},{"style":107},[5201],{"type":33,"value":5202},"ghcr.io/voxpupuli/semantic-release:25.0.0-latest\n",{"type":23,"tag":61,"props":5204,"children":5205},{"class":63,"line":51},[5206,5211,5216,5221],{"type":23,"tag":61,"props":5207,"children":5208},{"style":68},[5209],{"type":33,"value":5210},"    entrypoint",{"type":23,"tag":61,"props":5212,"children":5213},{"style":74},[5214],{"type":33,"value":5215},": [",{"type":23,"tag":61,"props":5217,"children":5218},{"style":107},[5219],{"type":33,"value":5220},"\"\"",{"type":23,"tag":61,"props":5222,"children":5223},{"style":74},[5224],{"type":33,"value":5225},"]\n",{"type":23,"tag":61,"props":5227,"children":5228},{"class":63,"line":52},[5229,5234,5238],{"type":23,"tag":61,"props":5230,"children":5231},{"style":68},[5232],{"type":33,"value":5233},"  interruptible",{"type":23,"tag":61,"props":5235,"children":5236},{"style":74},[5237],{"type":33,"value":104},{"type":23,"tag":61,"props":5239,"children":5240},{"style":1844},[5241],{"type":33,"value":1847},{"type":23,"tag":61,"props":5243,"children":5244},{"class":63,"line":718},[5245,5249],{"type":23,"tag":61,"props":5246,"children":5247},{"style":68},[5248],{"type":33,"value":5012},{"type":23,"tag":61,"props":5250,"children":5251},{"style":74},[5252],{"type":33,"value":77},{"type":23,"tag":61,"props":5254,"children":5255},{"class":63,"line":731},[5256,5260],{"type":23,"tag":61,"props":5257,"children":5258},{"style":74},[5259],{"type":33,"value":5024},{"type":23,"tag":61,"props":5261,"children":5262},{"style":107},[5263],{"type":33,"value":5264},"/container-entrypoint.sh\n",{"type":23,"tag":61,"props":5266,"children":5267},{"class":63,"line":744},[5268,5272],{"type":23,"tag":61,"props":5269,"children":5270},{"style":68},[5271],{"type":33,"value":5054},{"type":23,"tag":61,"props":5273,"children":5274},{"style":74},[5275],{"type":33,"value":77},{"type":23,"tag":61,"props":5277,"children":5278},{"class":63,"line":757},[5279,5283,5288,5292],{"type":23,"tag":61,"props":5280,"children":5281},{"style":74},[5282],{"type":33,"value":5024},{"type":23,"tag":61,"props":5284,"children":5285},{"style":68},[5286],{"type":33,"value":5287},"if",{"type":23,"tag":61,"props":5289,"children":5290},{"style":74},[5291],{"type":33,"value":104},{"type":23,"tag":61,"props":5293,"children":5294},{"style":107},[5295],{"type":33,"value":5296},"$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n",{"type":23,"tag":61,"props":5298,"children":5299},{"class":63,"line":770},[5300,5305,5309],{"type":23,"tag":61,"props":5301,"children":5302},{"style":68},[5303],{"type":33,"value":5304},"      when",{"type":23,"tag":61,"props":5306,"children":5307},{"style":74},[5308],{"type":33,"value":104},{"type":23,"tag":61,"props":5310,"children":5311},{"style":107},[5312],{"type":33,"value":5313},"never\n",{"type":23,"tag":61,"props":5315,"children":5316},{"class":63,"line":783},[5317,5321,5325,5329],{"type":23,"tag":61,"props":5318,"children":5319},{"style":74},[5320],{"type":33,"value":5024},{"type":23,"tag":61,"props":5322,"children":5323},{"style":68},[5324],{"type":33,"value":5287},{"type":23,"tag":61,"props":5326,"children":5327},{"style":74},[5328],{"type":33,"value":104},{"type":23,"tag":61,"props":5330,"children":5331},{"style":107},[5332],{"type":33,"value":5333},"$CI_COMMIT_BRANCH\n",{"type":23,"tag":43,"props":5335,"children":5338},{"className":1507,"code":5336,"filename":5337,"language":1364,"meta":7,"style":7},"{\n  \"plugins\": [\n    \"@semantic-release/commit-analyzer\",\n    [\n      \"semantic-release-replace-plugin\",\n      {\n        \"replacements\": [\n          {\n            \"files\": [\"composer.json\"],\n            \"from\": \"version\\\": \\\".*\\\"\",\n            \"to\": \"version\\\": \\\"${nextRelease.version}\\\"\"\n          }\n        ]\n      }\n    ],\n    [\n      \"@semantic-release/git\",\n      {\n        \"assets\": [\"composer.json\"],\n        \"message\": \"chore(release): ${nextRelease.version} [skip ci]\\n\\n${nextRelease.notes}\"\n      }\n    ],\n    [\n      \"@semantic-release/exec\",\n      {\n        \"publishCmd\": \"curl --fail-with-body --header \\\"Job-Token: ${process.env.CI_JOB_TOKEN}\\\" --data tag=${nextRelease.gitTag} ${process.env.CI_API_V4_URL}/projects/${process.env.CI_PROJECT_ID}/packages/composer\"\n      }\n    ]\n  ]\n}\n","\u003Cplugin-root>/.releaserc.json",[5339],{"type":23,"tag":57,"props":5340,"children":5341},{"__ignoreMap":7},[5342,5349,5361,5373,5381,5393,5401,5413,5421,5443,5490,5532,5540,5548,5555,5562,5569,5581,5588,5608,5635,5642,5649,5656,5668,5675,5710,5717,5724,5732],{"type":23,"tag":61,"props":5343,"children":5344},{"class":63,"line":64},[5345],{"type":23,"tag":61,"props":5346,"children":5347},{"style":74},[5348],{"type":33,"value":1526},{"type":23,"tag":61,"props":5350,"children":5351},{"class":63,"line":80},[5352,5357],{"type":23,"tag":61,"props":5353,"children":5354},{"style":1532},[5355],{"type":33,"value":5356},"  \"plugins\"",{"type":23,"tag":61,"props":5358,"children":5359},{"style":74},[5360],{"type":33,"value":1767},{"type":23,"tag":61,"props":5362,"children":5363},{"class":63,"line":93},[5364,5369],{"type":23,"tag":61,"props":5365,"children":5366},{"style":1542},[5367],{"type":33,"value":5368},"    \"@semantic-release/commit-analyzer\"",{"type":23,"tag":61,"props":5370,"children":5371},{"style":74},[5372],{"type":33,"value":1550},{"type":23,"tag":61,"props":5374,"children":5375},{"class":63,"line":113},[5376],{"type":23,"tag":61,"props":5377,"children":5378},{"style":74},[5379],{"type":33,"value":5380},"    [\n",{"type":23,"tag":61,"props":5382,"children":5383},{"class":63,"line":48},[5384,5389],{"type":23,"tag":61,"props":5385,"children":5386},{"style":1542},[5387],{"type":33,"value":5388},"      \"semantic-release-replace-plugin\"",{"type":23,"tag":61,"props":5390,"children":5391},{"style":74},[5392],{"type":33,"value":1550},{"type":23,"tag":61,"props":5394,"children":5395},{"class":63,"line":49},[5396],{"type":23,"tag":61,"props":5397,"children":5398},{"style":74},[5399],{"type":33,"value":5400},"      {\n",{"type":23,"tag":61,"props":5402,"children":5403},{"class":63,"line":50},[5404,5409],{"type":23,"tag":61,"props":5405,"children":5406},{"style":1532},[5407],{"type":33,"value":5408},"        \"replacements\"",{"type":23,"tag":61,"props":5410,"children":5411},{"style":74},[5412],{"type":33,"value":1767},{"type":23,"tag":61,"props":5414,"children":5415},{"class":63,"line":51},[5416],{"type":23,"tag":61,"props":5417,"children":5418},{"style":74},[5419],{"type":33,"value":5420},"          {\n",{"type":23,"tag":61,"props":5422,"children":5423},{"class":63,"line":52},[5424,5429,5433,5438],{"type":23,"tag":61,"props":5425,"children":5426},{"style":1532},[5427],{"type":33,"value":5428},"            \"files\"",{"type":23,"tag":61,"props":5430,"children":5431},{"style":74},[5432],{"type":33,"value":5215},{"type":23,"tag":61,"props":5434,"children":5435},{"style":1542},[5436],{"type":33,"value":5437},"\"composer.json\"",{"type":23,"tag":61,"props":5439,"children":5440},{"style":74},[5441],{"type":33,"value":5442},"],\n",{"type":23,"tag":61,"props":5444,"children":5445},{"class":63,"line":718},[5446,5451,5455,5460,5465,5469,5473,5478,5482,5486],{"type":23,"tag":61,"props":5447,"children":5448},{"style":1532},[5449],{"type":33,"value":5450},"            \"from\"",{"type":23,"tag":61,"props":5452,"children":5453},{"style":74},[5454],{"type":33,"value":104},{"type":23,"tag":61,"props":5456,"children":5457},{"style":1542},[5458],{"type":33,"value":5459},"\"version",{"type":23,"tag":61,"props":5461,"children":5462},{"style":1844},[5463],{"type":33,"value":5464},"\\\"",{"type":23,"tag":61,"props":5466,"children":5467},{"style":1542},[5468],{"type":33,"value":104},{"type":23,"tag":61,"props":5470,"children":5471},{"style":1844},[5472],{"type":33,"value":5464},{"type":23,"tag":61,"props":5474,"children":5475},{"style":1542},[5476],{"type":33,"value":5477},".*",{"type":23,"tag":61,"props":5479,"children":5480},{"style":1844},[5481],{"type":33,"value":5464},{"type":23,"tag":61,"props":5483,"children":5484},{"style":1542},[5485],{"type":33,"value":2152},{"type":23,"tag":61,"props":5487,"children":5488},{"style":74},[5489],{"type":33,"value":1550},{"type":23,"tag":61,"props":5491,"children":5492},{"class":63,"line":731},[5493,5498,5502,5506,5510,5514,5518,5523,5527],{"type":23,"tag":61,"props":5494,"children":5495},{"style":1532},[5496],{"type":33,"value":5497},"            \"to\"",{"type":23,"tag":61,"props":5499,"children":5500},{"style":74},[5501],{"type":33,"value":104},{"type":23,"tag":61,"props":5503,"children":5504},{"style":1542},[5505],{"type":33,"value":5459},{"type":23,"tag":61,"props":5507,"children":5508},{"style":1844},[5509],{"type":33,"value":5464},{"type":23,"tag":61,"props":5511,"children":5512},{"style":1542},[5513],{"type":33,"value":104},{"type":23,"tag":61,"props":5515,"children":5516},{"style":1844},[5517],{"type":33,"value":5464},{"type":23,"tag":61,"props":5519,"children":5520},{"style":1542},[5521],{"type":33,"value":5522},"${nextRelease.version}",{"type":23,"tag":61,"props":5524,"children":5525},{"style":1844},[5526],{"type":33,"value":5464},{"type":23,"tag":61,"props":5528,"children":5529},{"style":1542},[5530],{"type":33,"value":5531},"\"\n",{"type":23,"tag":61,"props":5533,"children":5534},{"class":63,"line":744},[5535],{"type":23,"tag":61,"props":5536,"children":5537},{"style":74},[5538],{"type":33,"value":5539},"          }\n",{"type":23,"tag":61,"props":5541,"children":5542},{"class":63,"line":757},[5543],{"type":23,"tag":61,"props":5544,"children":5545},{"style":74},[5546],{"type":33,"value":5547},"        ]\n",{"type":23,"tag":61,"props":5549,"children":5550},{"class":63,"line":770},[5551],{"type":23,"tag":61,"props":5552,"children":5553},{"style":74},[5554],{"type":33,"value":1855},{"type":23,"tag":61,"props":5556,"children":5557},{"class":63,"line":783},[5558],{"type":23,"tag":61,"props":5559,"children":5560},{"style":74},[5561],{"type":33,"value":2400},{"type":23,"tag":61,"props":5563,"children":5564},{"class":63,"line":793},[5565],{"type":23,"tag":61,"props":5566,"children":5567},{"style":74},[5568],{"type":33,"value":5380},{"type":23,"tag":61,"props":5570,"children":5571},{"class":63,"line":806},[5572,5577],{"type":23,"tag":61,"props":5573,"children":5574},{"style":1542},[5575],{"type":33,"value":5576},"      \"@semantic-release/git\"",{"type":23,"tag":61,"props":5578,"children":5579},{"style":74},[5580],{"type":33,"value":1550},{"type":23,"tag":61,"props":5582,"children":5583},{"class":63,"line":819},[5584],{"type":23,"tag":61,"props":5585,"children":5586},{"style":74},[5587],{"type":33,"value":5400},{"type":23,"tag":61,"props":5589,"children":5590},{"class":63,"line":828},[5591,5596,5600,5604],{"type":23,"tag":61,"props":5592,"children":5593},{"style":1532},[5594],{"type":33,"value":5595},"        \"assets\"",{"type":23,"tag":61,"props":5597,"children":5598},{"style":74},[5599],{"type":33,"value":5215},{"type":23,"tag":61,"props":5601,"children":5602},{"style":1542},[5603],{"type":33,"value":5437},{"type":23,"tag":61,"props":5605,"children":5606},{"style":74},[5607],{"type":33,"value":5442},{"type":23,"tag":61,"props":5609,"children":5610},{"class":63,"line":841},[5611,5616,5620,5625,5630],{"type":23,"tag":61,"props":5612,"children":5613},{"style":1532},[5614],{"type":33,"value":5615},"        \"message\"",{"type":23,"tag":61,"props":5617,"children":5618},{"style":74},[5619],{"type":33,"value":104},{"type":23,"tag":61,"props":5621,"children":5622},{"style":1542},[5623],{"type":33,"value":5624},"\"chore(release): ${nextRelease.version} [skip ci]",{"type":23,"tag":61,"props":5626,"children":5627},{"style":1844},[5628],{"type":33,"value":5629},"\\n\\n",{"type":23,"tag":61,"props":5631,"children":5632},{"style":1542},[5633],{"type":33,"value":5634},"${nextRelease.notes}\"\n",{"type":23,"tag":61,"props":5636,"children":5637},{"class":63,"line":854},[5638],{"type":23,"tag":61,"props":5639,"children":5640},{"style":74},[5641],{"type":33,"value":1855},{"type":23,"tag":61,"props":5643,"children":5644},{"class":63,"line":867},[5645],{"type":23,"tag":61,"props":5646,"children":5647},{"style":74},[5648],{"type":33,"value":2400},{"type":23,"tag":61,"props":5650,"children":5651},{"class":63,"line":875},[5652],{"type":23,"tag":61,"props":5653,"children":5654},{"style":74},[5655],{"type":33,"value":5380},{"type":23,"tag":61,"props":5657,"children":5658},{"class":63,"line":888},[5659,5664],{"type":23,"tag":61,"props":5660,"children":5661},{"style":1542},[5662],{"type":33,"value":5663},"      \"@semantic-release/exec\"",{"type":23,"tag":61,"props":5665,"children":5666},{"style":74},[5667],{"type":33,"value":1550},{"type":23,"tag":61,"props":5669,"children":5670},{"class":63,"line":901},[5671],{"type":23,"tag":61,"props":5672,"children":5673},{"style":74},[5674],{"type":33,"value":5400},{"type":23,"tag":61,"props":5676,"children":5677},{"class":63,"line":914},[5678,5683,5687,5692,5696,5701,5705],{"type":23,"tag":61,"props":5679,"children":5680},{"style":1532},[5681],{"type":33,"value":5682},"        \"publishCmd\"",{"type":23,"tag":61,"props":5684,"children":5685},{"style":74},[5686],{"type":33,"value":104},{"type":23,"tag":61,"props":5688,"children":5689},{"style":1542},[5690],{"type":33,"value":5691},"\"curl --fail-with-body --header ",{"type":23,"tag":61,"props":5693,"children":5694},{"style":1844},[5695],{"type":33,"value":5464},{"type":23,"tag":61,"props":5697,"children":5698},{"style":1542},[5699],{"type":33,"value":5700},"Job-Token: ${process.env.CI_JOB_TOKEN}",{"type":23,"tag":61,"props":5702,"children":5703},{"style":1844},[5704],{"type":33,"value":5464},{"type":23,"tag":61,"props":5706,"children":5707},{"style":1542},[5708],{"type":33,"value":5709}," --data tag=${nextRelease.gitTag} ${process.env.CI_API_V4_URL}/projects/${process.env.CI_PROJECT_ID}/packages/composer\"\n",{"type":23,"tag":61,"props":5711,"children":5712},{"class":63,"line":927},[5713],{"type":23,"tag":61,"props":5714,"children":5715},{"style":74},[5716],{"type":33,"value":1855},{"type":23,"tag":61,"props":5718,"children":5719},{"class":63,"line":940},[5720],{"type":23,"tag":61,"props":5721,"children":5722},{"style":74},[5723],{"type":33,"value":2430},{"type":23,"tag":61,"props":5725,"children":5726},{"class":63,"line":1952},[5727],{"type":23,"tag":61,"props":5728,"children":5729},{"style":74},[5730],{"type":33,"value":5731},"  ]\n",{"type":23,"tag":61,"props":5733,"children":5734},{"class":63,"line":1960},[5735],{"type":23,"tag":61,"props":5736,"children":5737},{"style":74},[5738],{"type":33,"value":2555},{"type":23,"tag":24,"props":5740,"children":5741},{},[5742],{"type":33,"value":5743},"Dies wird:",{"type":23,"tag":354,"props":5745,"children":5746},{},[5747,5752,5764,5776,5781],{"type":23,"tag":201,"props":5748,"children":5749},{},[5750],{"type":33,"value":5751},"Die Commits seit dem letzten Release analysieren, um zu entscheiden, ob eine neue Version veröffentlicht werden soll",{"type":23,"tag":201,"props":5753,"children":5754},{},[5755,5757,5762],{"type":33,"value":5756},"Die Version in der ",{"type":23,"tag":57,"props":5758,"children":5760},{"className":5759},[],[5761],{"type":33,"value":2825},{"type":33,"value":5763}," aktualisieren",{"type":23,"tag":201,"props":5765,"children":5766},{},[5767,5769,5774],{"type":33,"value":5768},"Die ",{"type":23,"tag":57,"props":5770,"children":5772},{"className":5771},[],[5773],{"type":33,"value":2825},{"type":33,"value":5775}," zurück in das Repository committen",{"type":23,"tag":201,"props":5777,"children":5778},{},[5779],{"type":33,"value":5780},"Einen Tag erstellen",{"type":23,"tag":201,"props":5782,"children":5783},{},[5784],{"type":33,"value":5785},"Ein Composer-Paket von diesem Tag releasen",{"type":23,"tag":1230,"props":5787,"children":5788},{},[5789],{"type":33,"value":1234},{"title":7,"searchDepth":80,"depth":80,"links":5791},[5792,5798],{"id":1477,"depth":80,"text":1480,"children":5793},[5794,5795,5796,5797],{"id":1488,"depth":93,"text":1491},{"id":2791,"depth":93,"text":2794},{"id":3453,"depth":93,"text":3456},{"id":4805,"depth":93,"text":4808},{"id":4837,"depth":80,"text":4840,"children":5799},[5800,5801],{"id":4843,"depth":93,"text":4846},{"id":5078,"depth":93,"text":5081},{"_path":1270,"_dir":1271,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":5803,"primaryTeam":1274,"firstName":1275,"lastName":1276,"prefixTitle":7,"suffixTitle":1277,"education":5804,"role":5806,"workingSince":1288,"inTheCompanySince":1289,"techSkills":5807,"skills":5821,"projects":5831,"contactDetails":5836,"_image":1361,"image":1362,"_id":1363,"_type":1364,"title":1365,"_source":1271,"_file":1366,"_stem":1367,"_extension":1364},[1273,1274],[5805],[1280,1281,1282],[1284,1285,1286,1287],[5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820],{"name":1292,"level":1293,"icon":1294},{"name":1296,"level":1293},{"name":1298,"level":1293,"icon":1299},{"name":1301,"level":1293,"icon":1302},{"name":1304,"level":1293,"icon":1305},{"name":1307,"level":1293},{"name":1309,"level":1293,"icon":1310},{"name":1312,"level":1293,"icon":1313},{"name":1315,"level":1316,"icon":1317},{"name":1319,"level":1316,"icon":1320},{"name":1322,"level":1316},{"name":1324,"level":1316,"icon":1325},{"name":1327,"level":1316,"icon":1328},[5822,5823,5824,5825,5826,5827,5828,5829,5830],{"name":1331,"level":1293},{"name":1333,"level":1293},{"name":1274,"level":1293},{"name":1336,"level":1293},{"name":1338,"level":1293},{"name":1340,"level":1316},{"name":1342,"level":1316},{"name":1344,"level":1316},{"name":1346,"level":1316},[5832,5834,5835],{"project":1349,"position":5833},[1351,1352],{"project":1354,"position":1352},{"project":1356,"position":1352},{"eMail":1358,"phone":1359,"visibility":1360},1782284046603]