{"id":201,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/cs\/wp-composer-nezavisla-nahrada-za-wpackagist-pro-composer\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-nezavisla-nahrada-za-wpackagist-pro-composer","status":"publish","type":"post","link":"https:\/\/helloblog.io\/cs\/wp-composer-nezavisla-nahrada-za-wpackagist-pro-composer\/","title":{"rendered":"WP Composer: nez\u00e1visl\u00e1 n\u00e1hrada za WPackagist pro instalaci plugin\u016f a \u0161ablon p\u0159es Composer"},"content":{"rendered":"\n<p>Pokud stav\u00ed\u0161 WordPress projekty modern\u011b (Bedrock, vlastn\u00ed deployment, CI), Composer je \u010dasto z\u00e1kladn\u00ed stavebn\u00ed k\u00e1men. A s n\u00edm dlouh\u00e9 roky p\u0159i\u0161el jeden skoro samoz\u0159ejm\u00fd p\u0159edpoklad: pluginy a \u0161ablony z WordPress.org bere\u0161 p\u0159es WPackagist.<\/p>\n\n\n\n<p>Jen\u017ee v okam\u017eiku, kdy se z podobn\u011b kritick\u00e9 infrastruktury pro workflow cel\u00e9 komunity stane majetek jedn\u00e9 korporace, je f\u00e9r zpozorn\u011bt. V b\u0159eznu 2026 byl WPackagist akv\u00edrov\u00e1n spole\u010dnost\u00ed WP Engine. V takov\u00e9 situaci je rozumn\u00e9 m\u00edt vedle existuj\u00edc\u00ed slu\u017eby i nez\u00e1vislou alternativu, kter\u00e1 je provozovan\u00e1 otev\u0159en\u011b a m\u00e1 jasn\u00fd governance model.<\/p>\n\n\n\n<p>Roots proto postavili <strong>WP Composer<\/strong>: nez\u00e1visl\u00fd, komunitn\u011b financovan\u00fd a pln\u011b open source Composer repository pro WordPress pluginy a \u0161ablony.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pro\u010d na tom z\u00e1le\u017e\u00ed (a pro\u010d to nen\u00ed jen \u201edal\u0161\u00ed mirror\u201c)<\/h2>\n\n\n\n<p>WPackagist p\u016fvodn\u011b vytvo\u0159ili Outlandish a \u0159adu let jej udr\u017eovali. V pozd\u011bj\u0161\u00ed f\u00e1zi ale projekt za\u010dal p\u016fsobit zanedban\u011b: pomal\u00e9 aktualizace, omezen\u00e1 \u00fadr\u017eba a minim\u00e1ln\u00ed re\u00e1ln\u00fd prostor pro komunitn\u00ed input. Akvizice WP Engine tyhle obavy logicky je\u0161t\u011b zes\u00edlila.<\/p>\n\n\n\n<p>Kdy\u017e je z\u00e1kladn\u00ed v\u00fdvoj\u00e1\u0159sk\u00fd n\u00e1stroj pod kontrolou jedin\u00e9 firmy, komunita ztr\u00e1c\u00ed hlas. Sm\u011b\u0159ov\u00e1n\u00ed, dostupnost nebo potenci\u00e1ln\u00ed monetizace se pak ne\u0159e\u0161\u00ed transparentn\u011b, ale sp\u00ed\u0161 \u201eza zav\u0159en\u00fdmi dve\u0159mi\u201c. Nav\u00edc nen\u00ed \u00fapln\u011b jasn\u00e9, zda WPackagist z\u016fst\u00e1v\u00e1 skute\u010dn\u011b open source v praxi \u2013 ve\u0159ejn\u00fd GitHub repozit\u00e1\u0159 https:\/\/github.com\/outlandishideas\/wpackagist u\u017e neodpov\u00edd\u00e1 b\u011b\u017e\u00edc\u00edmu webu.<\/p>\n\n\n\n<p>WP Composer je postaven\u00fd tak, aby byl <strong>transparentn\u00ed<\/strong>, <strong>komunitn\u011b financovan\u00fd<\/strong> a provozovan\u00fd lidmi, kte\u0159\u00ed WordPress infrastrukturu \u0159e\u0161\u00ed dlouhodob\u011b.<\/p>\n\n\n\n<p>Detailn\u00ed srovn\u00e1n\u00ed rozd\u00edl\u016f (v\u00fdkon, metadata, technick\u00e9 detaily) je na: <a href=\"https:\/\/wp-composer.com\/wp-composer-vs-wpackagist\">WP Composer vs WPackagist<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co WP Composer poskytuje<\/h2>\n\n\n\n<p>Z pohledu b\u011b\u017en\u00e9ho projektu je kl\u00ed\u010dov\u00e9 tohle: WP Composer poskytuje <strong>ka\u017ed\u00fd free plugin a free \u0161ablonu z WordPress.org adres\u00e1\u0159e<\/strong>, instalovatelnou p\u0159es Composer, a to s \u010dist\u00fdm a konzistentn\u00edm pojmenov\u00e1n\u00edm bal\u00ed\u010dk\u016f.<\/p>\n\n\n\n<p>Nejv\u011bt\u0161\u00ed ergonomick\u00e1 zm\u011bna je v n\u00e1zvech bal\u00ed\u010dk\u016f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>pluginy pou\u017e\u00edvaj\u00ed prefix <code>wp-plugin\/*<\/code><\/li>\n\n\n<li>\u0161ablony pou\u017e\u00edvaj\u00ed prefix <code>wp-theme\/*<\/code><\/li>\n\n\n<li>odpad\u00e1 historick\u00e9 <code>wpackagist-plugin<\/code> a <code>wpackagist-theme<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>Typick\u00e9 nastaven\u00ed <code>composer.json<\/code> pak vypad\u00e1 takto:<\/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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>WP Composer je z\u00e1rove\u0148 doporu\u010den\u00fd repository dopln\u011bk k bal\u00ed\u010dk\u016fm WordPress core od Roots: <a href=\"https:\/\/wp-composer.com\/roots-wordpress\"><code>roots\/wordpress<\/code><\/a>, <code>roots\/wordpress-full<\/code> a <code>roots\/wordpress-no-content<\/code>. Typick\u00fd projekt na <a href=\"https:\/\/roots.io\/bedrock\/\">Bedrock<\/a> pou\u017e\u00edv\u00e1 <code>roots\/wordpress<\/code> pro core a WP Composer pro pluginy a \u0161ablony.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migrace z WPackagist: konkr\u00e9tn\u00ed kroky<\/h2>\n\n\n\n<p>P\u0159echod je ve v\u00fdsledku jednoduch\u00fd: jde hlavn\u011b o v\u00fdm\u011bnu repository a p\u0159ejmenov\u00e1n\u00ed bal\u00ed\u010dk\u016f v <code>require<\/code>. Prakticky to zvl\u00e1dne\u0161 p\u00e1r p\u0159\u00edkazy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Odeber wpackagist bal\u00ed\u010dky<\/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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2) Vym\u011b\u0148 repository v Composer konfiguraci<\/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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3) Nainstaluj bal\u00ed\u010dky pod nov\u00fdm n\u00e1zvem (<code>wp-plugin\/&lt;em&gt;<\/code>, <code>wp-theme\/&lt;\/em&gt;<\/code>)<\/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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Alternativa: migra\u010dn\u00ed script pro automatickou \u00fapravu <code>composer.json<\/code><\/h3>\n\n\n\n<p>Pokud nechce\u0161 ru\u010dn\u011b proch\u00e1zet v\u0161echny dependency (typicky u v\u011bt\u0161\u00edch projekt\u016f), existuje migra\u010dn\u00ed script, kter\u00fd aktualizuje <code>composer.json<\/code> automaticky:<\/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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Pou\u017e\u00edv\u00e1\u0161-li GitHub Action pro sledov\u00e1n\u00ed changelog\u016f\/aktualizac\u00ed plugin\u016f, do\u0161lo i k p\u0159ejmenov\u00e1n\u00ed: z \u201eWPackagist Changelog Action\u201c na <a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\">WP Composer Changelog Action<\/a>. Akce pln\u011b podporuje nov\u00e9 form\u00e1ty n\u00e1zv\u016f <code>wp-plugin\/&lt;em&gt;<\/code> a <code>wp-theme\/&lt;\/em&gt;<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00fdkon: pro\u010d je WP Composer rychlej\u0161\u00ed p\u0159i resolve<\/h2>\n\n\n\n<p>Tady WP Composer m\u00ed\u0159\u00ed na velmi konkr\u00e9tn\u00ed technickou v\u011bc: podporuje protokol Composer v2 <code>metadata-url<\/code>. To znamen\u00e1, \u017ee Composer stahuje metadata jen pro bal\u00ed\u010dky, kter\u00e9 skute\u010dn\u011b pot\u0159ebuje vy\u0159e\u0161it.<\/p>\n\n\n\n<p>WPackagist naopak pou\u017e\u00edv\u00e1 star\u0161\u00ed p\u0159\u00edstup <code>provider-includes<\/code>, kter\u00fd nut\u00ed Composer st\u00e1hnout velk\u00e9 indexy obsahuj\u00edc\u00ed metadata pro tis\u00edce bal\u00ed\u010dk\u016f je\u0161t\u011b p\u0159edt\u00edm, ne\u017e v\u016fbec m\u016f\u017ee dependency za\u010d\u00edt rozumn\u011b resolvovat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u010casy resolve (cold cache)<\/h3>\n\n\n\n<p>M\u011b\u0159eno jako cold resolve (bez cache) \u2013 ni\u017e\u0161\u00ed \u010das je lep\u0161\u00ed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 plugin\u016f: WP Composer <strong>0,7 s<\/strong> vs WPackagist 12,3 s (cca <strong>17\u00d7<\/strong> rychlej\u0161\u00ed)<\/li>\n\n\n<li>20 plugin\u016f: WP Composer <strong>1,1 s<\/strong> vs WPackagist 19,0 s (cca <strong>17\u00d7<\/strong> rychlej\u0161\u00ed)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metadata a caching rozd\u00edly<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Composer v2 <code>metadata-url<\/code>: WP Composer <strong>ano<\/strong>, WPackagist <strong>ne<\/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 soubory: WP Composer \u201eimmutable, content-addressed, cached indefinitely\u201c, WPackagist \u201enot content-addressed\u201c<\/li>\n\n<\/ul>\n\n\n\n<p>Benchmarky byly spu\u0161t\u011bn\u00e9 z jedn\u00e9 lokace a na Composer 2.7+. V\u00fdsledky se m\u016f\u017eou li\u0161it podle regionu a kvality s\u00edt\u011b. Samotn\u00e9 benchmark skripty jsou otev\u0159en\u00e9: https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pln\u011b open source (v\u010detn\u011b deploymentu)<\/h2>\n\n\n\n<p>WP Composer nen\u00ed jen \u201ehotov\u00fd endpoint\u201c, kter\u00fd mus\u00ed\u0161 slep\u011b v\u011b\u0159it. Cel\u00e1 aplikace, dokumentace i deployment konfigurace jsou dostupn\u00e9 jako open source na GitHubu: https:\/\/github.com\/roots\/wp-composer. P\u0159isp\u00edvat m\u016f\u017ee kdokoliv a pokud chce\u0161, m\u016f\u017ee\u0161 si repository forknout a provozovat vlastn\u00ed instanci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Komunitn\u00ed financov\u00e1n\u00ed p\u0159es GitHub Sponsors<\/h2>\n\n\n\n<p>Provoz a v\u00fdvoj WP Composeru je financovan\u00fd v\u00fdhradn\u011b komunitn\u011b p\u0159es <a href=\"https:\/\/github.com\/sponsors\/roots\">GitHub Sponsors<\/a>. Sponzoring jde p\u0159\u00edmo na infrastrukturu, v\u00fdvoj a \u00fadr\u017ebu WP Composeru i \u0161ir\u0161\u00edho Roots ekosyst\u00e9mu.<\/p>\n\n\n\n<p>Pokud Composer pou\u017e\u00edv\u00e1\u0161 jako standardn\u00ed sou\u010d\u00e1st WordPress v\u00fdvoje, d\u00e1v\u00e1 tohle modelu n\u00e1stroj\u016f smysl: udr\u017euje kl\u00ed\u010dovou infrastrukturu nez\u00e1vislou a voln\u011b dostupnou.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ 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\">WP Composer (GitHub)<\/a><\/li><li><a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">WPackagist (GitHub)<\/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\/roots\/wp-composer-changelog-action\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer Changelog Action<\/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>WPackagist byl roky v\u00fdchoz\u00ed volbou pro WordPress bal\u00ed\u010dky v Composeru. Po zm\u011bn\u00e1ch kolem jeho vlastnictv\u00ed d\u00e1v\u00e1 smysl m\u00edt transparentn\u00ed, komunitn\u011b financovanou alternativu \u2013 a p\u0159esn\u011b na to m\u00ed\u0159\u00ed WP Composer od Roots.<\/p>\n","protected":false},"author":33,"featured_media":200,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[76,7,125,3],"class_list":["post-201","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ekosystem-wordpress","tag-bedrock","tag-composer","tag-plugins","tag-roots"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts\/201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/comments?post=201"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts\/201\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/media\/200"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/media?parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/categories?post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/tags?post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}