{"id":215,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/sk\/wp-composer-nezavisla-nahrada-za-wpackagist-v-composer-workflow-pre-wordpress\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-nezavisla-nahrada-za-wpackagist-v-composer-workflow-pre-wordpress","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sk\/wp-composer-nezavisla-nahrada-za-wpackagist-v-composer-workflow-pre-wordpress\/","title":{"rendered":"WP Composer: nez\u00e1visl\u00e1 n\u00e1hrada za WPackagist v Composer workflow pre WordPress"},"content":{"rendered":"\n<p>Ak pou\u017e\u00edva\u0161 Composer (PHP dependency manager) na mana\u017eovanie WordPress pluginov a t\u00e9m, pravdepodobne si roky siahal po WPackagist-e ako po \u201edefault\u201c repozit\u00e1ri. Bol to praktick\u00fd most medzi WordPress.org adres\u00e1rom a Composer ekosyst\u00e9mom \u2013 a pre mnoh\u00e9 projekty aj z\u00e1klad modern\u00e9ho WordPress deploymentu.<\/p>\n\n\n\n<p>V marci 2026 v\u0161ak pri\u0161la z\u00e1sadn\u00e1 zmena: WPackagist bol akv\u00edrovan\u00fd WP Engine, hostingovou spolo\u010dnos\u0165ou podporovanou private equity. Pri infra\u0161trukt\u00fare, ktor\u00e1 je takto centr\u00e1lna pre WordPress Composer workflow, je riziko jednostrannej kontroly re\u00e1lne \u2013 najm\u00e4 ak sa rozhodnutia o dostupnosti, smerovan\u00ed \u010di pr\u00edpadnom spoplatnen\u00ed za\u010dn\u00fa robi\u0165 mimo otvorenej komunity.<\/p>\n\n\n\n<p>Pr\u00e1ve preto vznikol <strong>WP Composer<\/strong>: nez\u00e1visl\u00fd, komunitou financovan\u00fd a plne open source Composer repozit\u00e1r pre WordPress pluginy a t\u00e9my, ktor\u00fd buduje a prev\u00e1dzkuje Roots. Web: <a href=\"https:\/\/wp-composer.com\">https:\/\/wp-composer.com<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pre\u010do to rie\u0161i\u0165 pr\u00e1ve teraz<\/h2>\n\n\n\n<p>WPackagist p\u00f4vodne vytvoril t\u00edm Outlandish a dlh\u00e9 roky ho udr\u017eiaval. Nesk\u00f4r v\u0161ak projekt \u010doraz viac trpel klasick\u00fdmi probl\u00e9mami zanedbanej infra\u0161trukt\u00fary: pomal\u00e9 aktualiz\u00e1cie, obmedzen\u00e1 \u00fadr\u017eba a prakticky \u017eiadny zmyslupln\u00fd vstup komunity do rozhodovania.<\/p>\n\n\n\n<p>Ak infra\u0161trukt\u00faru, na ktorej stoj\u00ed developer workflow, ovl\u00e1da jedna korpor\u00e1cia, komunita prirodzene str\u00e1ca hlas. A z\u00e1rove\u0148 vznik\u00e1 ot\u00e1znik nad transparentnos\u0165ou: nie je jasn\u00e9, \u010di WPackagist zost\u00e1va na\u010falej skuto\u010dne open source \u2013 jeho verejn\u00fd GitHub repozit\u00e1r u\u017e nezodpoved\u00e1 tomu, \u010do be\u017e\u00ed na produk\u010dnom webe: <a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\">https:\/\/github.com\/outlandishideas\/wpackagist<\/a>.<\/p>\n\n\n\n<p>WP Composer stavia na opa\u010dn\u00fdch princ\u00edpoch: transparentnos\u0165, otvoren\u00fd v\u00fdvoj a financovanie priamo komunitou.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Porovnanie detailov<\/h4>\n\n\n<p>Ak \u0165a zauj\u00edma rozdiel vo v\u00fdkone, metad\u00e1tach a \u010fal\u0161\u00edch technick\u00fdch detailoch, Roots udr\u017eiava verejn\u00e9 porovnanie: <a href=\"https:\/\/wp-composer.com\/wp-composer-vs-wpackagist\">https:\/\/wp-composer.com\/wp-composer-vs-wpackagist<\/a><\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u010co WP Composer poskytuje<\/h2>\n\n\n\n<p>WP Composer spr\u00edstup\u0148uje <strong>ka\u017ed\u00fd bezplatn\u00fd plugin a t\u00e9mu z WordPress.org adres\u00e1ra<\/strong> tak, aby sa dali in\u0161talova\u0165 cez Composer \u2013 a z\u00e1rove\u0148 upratuje n\u00e1zvoslovie bal\u00edkov.<\/p>\n\n\n\n<p>Z\u00e1kladn\u00e1 idea je jednoduch\u00e1: pluginy id\u00fa pod namespace <code>wp-plugin\/&lt;em&gt;<\/code> a t\u00e9my pod <code>wp-theme\/&lt;\/em&gt;<\/code>. T\u00fdm odpad\u00e1va historick\u00e9 prefixovanie typu <code>wpackagist-plugin<\/code> a <code>wpackagist-theme<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n  &quot;repositories&quot;: [\n    {\n      &quot;name&quot;: &quot;wp-composer&quot;,\n      &quot;type&quot;: &quot;composer&quot;,\n      &quot;url&quot;: &quot;https:\/\/repo.wp-composer.com&quot;,\n      &quot;only&quot;: [&quot;wp-plugin\/*&quot;, &quot;wp-theme\/*&quot;]\n    }\n  ],\n  &quot;require&quot;: {\n    &quot;wp-plugin\/woocommerce&quot;: &quot;^10.0&quot;,\n    &quot;wp-theme\/twentytwentyfive&quot;: &quot;^1.0&quot;\n  }\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">  \"repositories\"<\/span><span style=\"color:#E1E4E8\">: [<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">      \"name\"<\/span><span style=\"color:#E1E4E8\">: <\/span><span style=\"color:#9ECBFF\">\"wp-composer\"<\/span><span style=\"color:#E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">      \"type\"<\/span><span style=\"color:#E1E4E8\">: <\/span><span style=\"color:#9ECBFF\">\"composer\"<\/span><span style=\"color:#E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">      \"url\"<\/span><span style=\"color:#E1E4E8\">: <\/span><span style=\"color:#9ECBFF\">\"https:\/\/repo.wp-composer.com\"<\/span><span style=\"color:#E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">      \"only\"<\/span><span style=\"color:#E1E4E8\">: [<\/span><span style=\"color:#9ECBFF\">\"wp-plugin\/*\"<\/span><span style=\"color:#E1E4E8\">, <\/span><span style=\"color:#9ECBFF\">\"wp-theme\/*\"<\/span><span style=\"color:#E1E4E8\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  ],<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">  \"require\"<\/span><span style=\"color:#E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">    \"wp-plugin\/woocommerce\"<\/span><span style=\"color:#E1E4E8\">: <\/span><span style=\"color:#9ECBFF\">\"^10.0\"<\/span><span style=\"color:#E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">    \"wp-theme\/twentytwentyfive\"<\/span><span style=\"color:#E1E4E8\">: <\/span><span style=\"color:#9ECBFF\">\"^1.0\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>WP Composer je z\u00e1rove\u0148 odpor\u00fa\u010dan\u00fd repozit\u00e1r na pou\u017eitie spolu s bal\u00edkmi WordPress core od Roots \u2013 konkr\u00e9tne <code>roots\/wordpress<\/code>, <code>roots\/wordpress-full<\/code> a <code>roots\/wordpress-no-content<\/code>. V praxi to \u010dasto vyzer\u00e1 tak, \u017ee projekt postaven\u00fd na <a href=\"https:\/\/roots.io\/bedrock\/\">Bedrock<\/a> pou\u017e\u00edva <code>roots\/wordpress<\/code> pre core a WP Composer pre pluginy a t\u00e9my.<\/p>\n\n\n\n<p>Detailn\u00fd popis core bal\u00edkov od Roots n\u00e1jde\u0161 tu: <a href=\"https:\/\/wp-composer.com\/roots-wordpress\">https:\/\/wp-composer.com\/roots-wordpress<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migr\u00e1cia z WPackagistu: presn\u00e9 kroky<\/h2>\n\n\n\n<p>Prechod je priamo\u010diary a d\u00e1 sa spravi\u0165 bu\u010f ru\u010dne cez p\u00e1r Composer pr\u00edkazov, alebo automatizovane skriptom. Ni\u017e\u0161ie je postup v troch krokoch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Odstr\u00e1\u0148 existuj\u00face WPackagist bal\u00edky<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composer remove wpackagist-plugin\/woocommerce wpackagist-theme\/twentytwentyfive\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">composer<\/span><span style=\"color:#9ECBFF\"> remove<\/span><span style=\"color:#9ECBFF\"> wpackagist-plugin\/woocommerce<\/span><span style=\"color:#9ECBFF\"> wpackagist-theme\/twentytwentyfive<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2) Vyme\u0148 repozit\u00e1r v Composer konfigur\u00e1cii<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composer config --unset repositories.wpackagist &amp;&amp; composer config repositories.wp-composer composer https:\/\/repo.wp-composer.com\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">composer<\/span><span style=\"color:#9ECBFF\"> config<\/span><span style=\"color:#79B8FF\"> --unset<\/span><span style=\"color:#9ECBFF\"> repositories.wpackagist<\/span><span style=\"color:#E1E4E8\"> &#x26;&#x26; <\/span><span style=\"color:#B392F0\">composer<\/span><span style=\"color:#9ECBFF\"> config<\/span><span style=\"color:#9ECBFF\"> repositories.wp-composer<\/span><span style=\"color:#9ECBFF\"> composer<\/span><span style=\"color:#9ECBFF\"> https:\/\/repo.wp-composer.com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3) Pridaj bal\u00edky u\u017e v novom n\u00e1zvoslov\u00ed<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composer require wp-plugin\/woocommerce wp-theme\/twentytwentyfive\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">composer<\/span><span style=\"color:#9ECBFF\"> require<\/span><span style=\"color:#9ECBFF\"> wp-plugin\/woocommerce<\/span><span style=\"color:#9ECBFF\"> wp-theme\/twentytwentyfive<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Alternat\u00edva: migra\u010dn\u00fd skript, ktor\u00fd uprav\u00ed composer.json automaticky<\/h3>\n\n\n\n<p>Ak chce\u0161 premapova\u0165 n\u00e1zvy bal\u00edkov v <code>composer.json<\/code> bez ru\u010dn\u00fdch z\u00e1sahov, existuje migra\u010dn\u00fd skript priamo v repozit\u00e1ri:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>curl -sO https:\/\/raw.githubusercontent.com\/roots\/wp-composer\/main\/scripts\/migrate-from-wpackagist.sh &amp;&amp; bash migrate-from-wpackagist.sh\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">curl<\/span><span style=\"color:#79B8FF\"> -sO<\/span><span style=\"color:#9ECBFF\"> https:\/\/raw.githubusercontent.com\/roots\/wp-composer\/main\/scripts\/migrate-from-wpackagist.sh<\/span><span style=\"color:#E1E4E8\"> &#x26;&#x26; <\/span><span style=\"color:#B392F0\">bash<\/span><span style=\"color:#9ECBFF\"> migrate-from-wpackagist.sh<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Skript je dostupn\u00fd aj na GitHub-e: <a href=\"https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh\">https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GitHub Action na changelogy: premenovanie a podpora nov\u00e9ho form\u00e1tu<\/h2>\n\n\n\n<p>Ak pou\u017e\u00edva\u0161 GitHub Action, ktor\u00e1 sleduje aktualiz\u00e1cie pluginov, po\u010d\u00edtaj s t\u00fdm, \u017ee action bola premenovan\u00e1 z \u201eWPackagist Changelog Action\u201c na <strong>WP Composer Changelog Action<\/strong> a podporuje nov\u00e9 n\u00e1zvoslovie <code>wp-plugin\/&lt;em&gt;<\/code> a <code>wp-theme\/&lt;\/em&gt;<\/code>.<\/p>\n\n\n\n<p>Repozit\u00e1r action: <a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\">https:\/\/github.com\/roots\/wp-composer-changelog-action<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00fdkon: pre\u010do je WP Composer r\u00fdchlej\u0161\u00ed pri resolve<\/h2>\n\n\n\n<p>Najv\u00e4\u010d\u0161\u00ed praktick\u00fd rozdiel pri ka\u017edodennom pou\u017eit\u00ed je v tom, ako Composer s\u0165ahuje metad\u00e1ta. WP Composer podporuje protokol <strong>Composer v2 <code>metadata-url<\/code><\/strong>, v\u010faka ktor\u00e9mu Composer \u0165ah\u00e1 metad\u00e1ta iba pre bal\u00edky, ktor\u00e9 re\u00e1lne potrebuje na vyrie\u0161enie z\u00e1vislost\u00ed.<\/p>\n\n\n\n<p>WPackagist na\u010falej pou\u017e\u00edva star\u0161\u00ed pr\u00edstup <strong><code>provider-includes<\/code><\/strong>, kde Composer mus\u00ed najprv stiahnu\u0165 ve\u013ek\u00e9 index s\u00fabory s metad\u00e1tami pre tis\u00edce bal\u00edkov, a\u017e potom m\u00f4\u017ee za\u010da\u0165 resolve z\u00e1vislost\u00ed. To je presne ten typ \u201eskrytej\u201c re\u017eie, ktor\u00fd \u0165a bol\u00ed najm\u00e4 v CI a pri cold cache.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u010casy resolve (cold resolve, bez cache) \u2013 menej je lep\u0161ie<\/h3>\n\n\n\n<p>Ni\u017e\u0161ie s\u00fa uveden\u00e9 nameran\u00e9 hodnoty:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 pluginov: WP Composer <strong>0.7s<\/strong> vs WPackagist 12.3s (\u2248 <strong>17\u00d7<\/strong> r\u00fdchlej\u0161ie)<\/li>\n\n\n<li>20 pluginov: WP Composer <strong>1.1s<\/strong> vs WPackagist 19.0s (\u2248 <strong>17\u00d7<\/strong> r\u00fdchlej\u0161ie)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metad\u00e1ta a cacheovanie<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Composer v2 <code>metadata-url<\/code>: WP Composer <strong>\u00e1no<\/strong>, WPackagist <strong>nie<\/strong><\/li>\n\n\n<li>CDN caching: WP Composer <code>public, max-age=300<\/code>, WPackagist <code>no-cache, private<\/code><\/li>\n\n\n<li>Per-package s\u00fabory: WP Composer m\u00e1 <strong>immutable<\/strong>, content-addressed s\u00fabory cacheovan\u00e9 \u201eindefinitely\u201c; WPackagist nie je content-addressed<\/li>\n\n<\/ul>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Pozn\u00e1mka k benchmarkom<\/h4>\n\n\n<p>Benchmarky boli spusten\u00e9 z jednej lokality na Composer 2.7+ a v\u00fdsledky sa m\u00f4\u017eu l\u00ed\u0161i\u0165 pod\u013ea regi\u00f3nu a sie\u0165ov\u00fdch podmienok. Skripty benchmarkov s\u00fa verejn\u00e9: <a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\">https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks<\/a><\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Plne open source: k\u00f3d, dokument\u00e1cia aj deployment<\/h2>\n\n\n\n<p>WP Composer je navrhnut\u00fd tak, aby bol auditovate\u013en\u00fd a znovupou\u017eite\u013en\u00fd: aplika\u010dn\u00fd k\u00f3d, dokument\u00e1cia aj deployment konfigur\u00e1cia s\u00fa verejne dostupn\u00e9 na GitHub-e: <a href=\"https:\/\/github.com\/roots\/wp-composer\">https:\/\/github.com\/roots\/wp-composer<\/a>.<\/p>\n\n\n\n<p>D\u00f4le\u017eit\u00fd detail: ktoko\u013evek si vie projekt forkn\u00fa\u0165 a spusti\u0165 vlastn\u00fa in\u0161tanciu. To je presne typ nez\u00e1vislosti, ktor\u00fd pri kritickej infra\u0161trukt\u00fare d\u00e1va komunite istotu, \u017ee nie je \u201ezamknut\u00e1\u201c do jedn\u00e9ho poskytovate\u013ea.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Financovanie komunitou cez GitHub Sponsors<\/h2>\n\n\n\n<p>Prev\u00e1dzka tak\u00e9hoto repozit\u00e1ra nie\u010do stoj\u00ed (infra, v\u00fdvoj, \u00fadr\u017eba). WP Composer je financovan\u00fd v\u00fdhradne komunitou cez GitHub Sponsors: <a href=\"https:\/\/github.com\/sponsors\/roots\">https:\/\/github.com\/sponsors\/roots<\/a>. Sponsoring m\u00e1 podporova\u0165 nielen WP Composer, ale aj \u0161ir\u0161\u00ed Roots ekosyst\u00e9m.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zhrnutie pre prax<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WP Composer je nez\u00e1visl\u00fd Composer repozit\u00e1r pre WordPress pluginy a t\u00e9my, udr\u017eiavan\u00fd Roots.<\/li>\n\n\n<li>Pou\u017e\u00edva \u010dist\u00e9 n\u00e1zvy bal\u00edkov <code>wp-plugin\/&lt;em&gt;<\/code> a <code>wp-theme\/&lt;\/em&gt;<\/code>.<\/li>\n\n\n<li>Migr\u00e1cia z WPackagistu je ot\u00e1zkou p\u00e1r pr\u00edkazov alebo jedn\u00e9ho skriptu.<\/li>\n\n\n<li>V\u010faka Composer v2 <code>metadata-url<\/code> je resolve v\u00fdrazne r\u00fdchlej\u0161\u00ed, najm\u00e4 pri cold cache a v CI.<\/li>\n\n\n<li>Projekt je plne open source a financovan\u00fd komunitou cez GitHub Sponsors.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Referencie \/ Zdroje<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/roots.io\/introducing-wp-composer-as-a-wpackagist-replacement\/\" target=\"_blank\" rel=\"noopener noreferrer\">Introducing WP Composer as a WPackagist Replacement<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\/wp-composer-vs-wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer vs WPackagist<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/wp-composer<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh\" target=\"_blank\" rel=\"noopener noreferrer\">migrate-from-wpackagist.sh<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer Changelog Action<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer benchmarks<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\/roots-wordpress\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/wordpress<\/a><\/li><li><a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a><\/li><li><a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">outlandishideas\/wpackagist<\/a><\/li><li><a href=\"https:\/\/github.com\/sponsors\/roots\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Sponsors (Roots)<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Ak spravuje\u0161 WordPress pluginy a t\u00e9my cez Composer, presun WPackagistu pod jednu firmu je z\u00e1sadn\u00fd sign\u00e1l. WP Composer prin\u00e1\u0161a nez\u00e1visl\u00fd, community-funded a plne open source repozit\u00e1r s r\u00fdchlej\u0161\u00edm resolvom a \u010distej\u0161\u00edm n\u00e1zvoslov\u00edm bal\u00edkov.<\/p>\n","protected":false},"author":36,"featured_media":214,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[73,8,3],"class_list":["post-215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ekosystem-wordpress","tag-bedrock","tag-composer","tag-roots"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts\/215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/comments?post=215"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts\/215\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/media\/214"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/media?parent=215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/categories?post=215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/tags?post=215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}