{"id":224,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/pl\/wp-composer-niezalezny-zamiennik-dla-wpackagist\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-niezalezny-zamiennik-dla-wpackagist","status":"publish","type":"post","link":"https:\/\/helloblog.io\/pl\/wp-composer-niezalezny-zamiennik-dla-wpackagist\/","title":{"rendered":"WP Composer: niezale\u017cny zamiennik dla WPackagist w workflow z Composerem"},"content":{"rendered":"\n<p>Przez ponad dekad\u0119 WPackagist by\u0142 domy\u015blnym sposobem na instalowanie wtyczek i motyw\u00f3w z katalogu WordPress.org za pomoc\u0105 Composera. W marcu 2026 sytuacja si\u0119 zmieni\u0142a: WPackagist zosta\u0142 przej\u0119ty przez WP Engine (hosting wspierany przez private equity). Dla narz\u0119dzia, kt\u00f3re jest tak centralnym elementem \u201eWordPress + Composer workflow\u201d, oznacza to realne ryzyko zamkni\u0119cia decyzji (dost\u0119pno\u015b\u0107, kierunek, potencjalne op\u0142aty) w ramach jednej firmy.<\/p>\n\n\n\n<p>W odpowiedzi powsta\u0142 <strong>WP Composer<\/strong> &#8211; niezale\u017cne, w pe\u0142ni open source repozytorium Composera dla wtyczek i motyw\u00f3w WordPressa. Projekt jest budowany i utrzymywany przez Roots, a finansowany wy\u0142\u0105cznie przez spo\u0142eczno\u015b\u0107.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dlaczego to w og\u00f3le ma znaczenie?<\/h2>\n\n\n\n<p>WPackagist zosta\u0142 pierwotnie zbudowany przez Outlandish i przez lata utrzymywany w dobrym stanie. Z czasem jednak projekt zacz\u0105\u0142 cierpie\u0107 na typowe problemy \u201eosieroconej infrastruktury\u201d: wolniejsze aktualizacje, ograniczone utrzymanie i brak realnego wp\u0142ywu spo\u0142eczno\u015bci na kierunek rozwoju. Przej\u0119cie przez WP Engine tylko spot\u0119gowa\u0142o te obawy.<\/p>\n\n\n\n<p>Jest te\u017c aspekt transparentno\u015bci: nie jest jasne, czy WPackagist pozostaje w pe\u0142ni otwartym oprogramowaniem w praktyce &#8211; publiczne repozytorium GitHub (https:\/\/github.com\/outlandishideas\/wpackagist) nie odzwierciedla ju\u017c dzia\u0142ania produkcyjnej wersji serwisu. A gdy fundamentalne narz\u0119dzie deweloperskie przestaje by\u0107 rozwijane \u201ena oczach wszystkich\u201d, spo\u0142eczno\u015b\u0107 traci g\u0142os.<\/p>\n\n\n\n<p>WP Composer celuje dok\u0142adnie w te s\u0142abe punkty: ma by\u0107 <strong>transparentny<\/strong>, <strong>spo\u0142eczno\u015bciowo finansowany<\/strong> i rozwijany przez ludzi, kt\u00f3rzy od lat buduj\u0105 nowoczesny stack dla WordPressa.<\/p>\n\n\n\n<p>Je\u015bli chcesz por\u00f3wna\u0107 r\u00f3\u017cnice w detalach (wydajno\u015b\u0107, metadane i r\u00f3\u017cnice w podej\u015bciu), jest gotowe zestawienie: <a href=\"https:\/\/wp-composer.com\/wp-composer-vs-wpackagist\">full comparison of WP Composer vs WPackagist<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co dok\u0142adnie daje WP Composer?<\/h2>\n\n\n\n<p>Najwa\u017cniejsze: <strong>ka\u017cda darmowa wtyczka i motyw z katalogu WordPress.org<\/strong> jest dost\u0119pna do instalacji przez Composer &#8211; z czystym nazewnictwem paczek.<\/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>Konwencja jest prosta i przewidywalna: wtyczki instalujesz jako <code>wp-plugin\/&lt;em&gt;<\/code>, a motywy jako <code>wp-theme\/&lt;\/em&gt;<\/code>. To usuwa wcze\u015bniejsze prefiksy <code>wpackagist-plugin<\/code> i <code>wpackagist-theme<\/code>, kt\u00f3re przez lata by\u0142y po prostu \u201ehistorycznym balastem\u201d w konfiguracjach projekt\u00f3w.<\/p>\n\n\n\n<p>WP Composer jest te\u017c rekomendowany jako repozytorium do u\u017cycia razem z paczkami WordPress core od Roots: <a href=\"https:\/\/wp-composer.com\/roots-wordpress\"><code>roots\/wordpress<\/code><\/a>, <code>roots\/wordpress-full<\/code> oraz <code>roots\/wordpress-no-content<\/code>. W typowym projekcie na <a href=\"https:\/\/roots.io\/bedrock\/\">Bedrock<\/a> spotkasz uk\u0142ad: <code>roots\/wordpress<\/code> dla core oraz WP Composer dla wtyczek i motyw\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migracja z WPackagist (krok po kroku)<\/h2>\n\n\n\n<p>Przej\u015bcie jest mechaniczne i sprowadza si\u0119 do podmiany repozytorium oraz nazewnictwa paczek. Najcz\u0119stszy scenariusz to trzy komendy:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Usu\u0144 paczki WPackagist z projektu<\/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) Podmie\u0144 repozytorium w konfiguracji Composera<\/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) Dodaj zale\u017cno\u015bci w nowym formacie nazewnictwa<\/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<p>Je\u017celi wolisz zautomatyzowa\u0107 zmian\u0119 w <code>composer.json<\/code>, jest gotowy skrypt migracyjny, kt\u00f3ry aktualizuje konfiguracj\u0119 automatycznie: <a href=\"https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh\">migration script<\/a>.<\/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>Dodatkowo, je\u015bli korzystasz z GitHub Action do \u015bledzenia aktualizacji wtyczek, to akcja zosta\u0142a przemianowana z WPackagist Changelog Action na <a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\">WP Composer Changelog Action<\/a> i w pe\u0142ni wspiera nowe nazwy <code>wp-plugin\/&lt;em&gt;<\/code> i <code>wp-theme\/&lt;\/em&gt;<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wydajno\u015b\u0107: dlaczego resolve w Composerze potrafi by\u0107 o rz\u0105d wielko\u015bci szybszy<\/h2>\n\n\n\n<p>WP Composer wspiera protok\u00f3\u0142 <code>metadata-url<\/code> z Composera v2. W praktyce oznacza to, \u017ce Composer pobiera metadane tylko dla tych paczek, kt\u00f3rych naprawd\u0119 potrzebuje do rozwi\u0105zania zale\u017cno\u015bci. WPackagist bazuje na starszym podej\u015bciu <code>provider-includes<\/code>, kt\u00f3re zmusza Composera do pobierania du\u017cych plik\u00f3w indeks\u00f3w zawieraj\u0105cych metadane dla tysi\u0119cy paczek jeszcze zanim zacznie sensownie rozwi\u0105zywa\u0107 Twoje wymagania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Czasy resolve (Composer 2) &#8211; cold resolve, bez cache<\/h3>\n\n\n\n<p>Wyniki poni\u017cej dotycz\u0105 cold resolve (brak cache). Im ni\u017cej, tym lepiej.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 wtyczek: WP Composer <strong>0.7s<\/strong> vs WPackagist 12.3s &#8211; <strong>17\u00d7 szybciej<\/strong><\/li>\n\n\n<li>20 wtyczek: WP Composer <strong>1.1s<\/strong> vs WPackagist 19.0s &#8211; <strong>17\u00d7 szybciej<\/strong><\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metadane i cache\u2019owanie<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Composer v2 <code>metadata-url<\/code>: WP Composer &#8211; <strong>tak<\/strong>, WPackagist &#8211; <strong>nie<\/strong><\/li>\n\n\n<li>CDN caching: WP Composer &#8211; <code>public, max-age=300<\/code>, WPackagist &#8211; <code>no-cache, private<\/code><\/li>\n\n\n<li>Pliki per-paczka: WP Composer &#8211; immutable, content-addressed, cache\u2019owane bezterminowo; WPackagist &#8211; nie jest content-addressed<\/li>\n\n<\/ul>\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\">Uwaga do benchmark\u00f3w<\/h4>\n\n\n<p>Benchmarki uruchomiono z jednej lokalizacji na Composerze 2.7+. Wyniki mog\u0105 si\u0119 r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od regionu i warunk\u00f3w sieciowych. Skrypty benchmark\u00f3w s\u0105 publiczne: https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">W pe\u0142ni open source (i mo\u017cliwy self-hosting)<\/h2>\n\n\n\n<p>Kod aplikacji, dokumentacja i konfiguracja wdro\u017ceniowa WP Composer s\u0105 w ca\u0142o\u015bci dost\u0119pne na GitHubie: https:\/\/github.com\/roots\/wp-composer. Projekt przyjmuje kontrybucje, a je\u015bli chcesz, mo\u017cesz sforkowa\u0107 repozytorium i uruchomi\u0107 w\u0142asn\u0105 instancj\u0119.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Finansowanie przez spo\u0142eczno\u015b\u0107<\/h2>\n\n\n\n<p>WP Composer jest finansowany w 100% przez spo\u0142eczno\u015b\u0107 przez GitHub Sponsors: https:\/\/github.com\/sponsors\/roots. To finansowanie pokrywa infrastruktur\u0119, rozw\u00f3j i utrzymanie WP Composer oraz szerzej &#8211; ekosystem Roots.<\/p>\n\n\n\n<p>Je\u015bli Twoje projekty WordPressowe realnie polegaj\u0105 na Composerze (wtyczki, motywy, powtarzalne deploye), taki model finansowania jest te\u017c sposobem na utrzymanie niezale\u017cno\u015bci narz\u0119dzia: https:\/\/github.com\/sponsors\/roots.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie: co warto zapami\u0119ta\u0107<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WPackagist po przej\u0119ciu w marcu 2026 sta\u0142 si\u0119 elementem infrastruktury kontrolowanym przez jedn\u0105 firm\u0119, co rodzi ryzyka dla ca\u0142ego workflow \u201eWordPress + Composer\u201d.<\/li>\n\n\n<li>WP Composer to niezale\u017cne repozytorium Composera dla wtyczek i motyw\u00f3w z WordPress.org, rozwijane przez Roots, w pe\u0142ni open source i finansowane przez spo\u0142eczno\u015b\u0107.<\/li>\n\n\n<li>Nowe, czyste nazwy paczek (<code>wp-plugin\/&lt;em&gt;<\/code>, <code>wp-theme\/&lt;\/em&gt;<\/code>) upraszczaj\u0105 konfiguracje i migracje.<\/li>\n\n\n<li>Wsparcie <code>metadata-url<\/code> w Composer v2 oraz sensowne cache\u2019owanie przek\u0142adaj\u0105 si\u0119 na znacznie kr\u00f3tsze czasy resolve w por\u00f3wnaniu do WPackagist.<\/li>\n\n\n<li>Migracja jest prosta: usuwasz stare paczki, podmieniasz repozytorium, dodajesz zale\u017cno\u015bci w nowym formacie (albo uruchamiasz skrypt migracyjny).<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Odniesienia \/ \u0179r\u00f3d\u0142a<\/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\/outlandishideas\/wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">outlandishideas\/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\">roots\/wp-composer-changelog-action<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\" target=\"_blank\" rel=\"noopener noreferrer\">Benchmarks (roots\/wp-composer)<\/a><\/li><li><a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\/roots-wordpress\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/wordpress<\/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>Je\u015bli instalujesz wtyczki i motywy WordPressa przez Composer, zmiana w ekosystemie WPackagist z marca 2026 ma znaczenie wi\u0119ksze, ni\u017c mo\u017ce si\u0119 wydawa\u0107. WP Composer to otwarta, spo\u0142eczno\u015bciowo finansowana alternatywa z czystym nazewnictwem paczek i wyra\u017anie lepsz\u0105 wydajno\u015bci\u0105 rozwi\u0105zywania zale\u017cno\u015bci.<\/p>\n","protected":false},"author":25,"featured_media":223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[73,7,3],"class_list":["post-224","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\/pl\/wp-json\/wp\/v2\/posts\/224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/comments?post=224"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/posts\/224\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/media\/223"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/media?parent=224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/categories?post=224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/pl\/wp-json\/wp\/v2\/tags?post=224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}