{"id":247,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/ro\/wp-composer-alternativa-wpackagist-composer-wordpress\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-alternativa-wpackagist-composer-wordpress","status":"publish","type":"post","link":"https:\/\/helloblog.io\/ro\/wp-composer-alternativa-wpackagist-composer-wordpress\/","title":{"rendered":"WP Composer: alternativa modern\u0103 la WPackagist pentru pluginuri \u0219i teme WordPress instalate cu Composer"},"content":{"rendered":"\n<p>\u00cen ecosistemul WordPress, Composer a devenit de ani buni instrumentul preferat atunci c\u00e2nd vrei proiecte reproductibile, deploy-uri curate \u0219i control real asupra dependen\u021belor. Iar pentru pluginuri \u0219i teme, solu\u021bia \u201eimplicit\u0103\u201d mult timp a fost WPackagist.<\/p>\n\n\n\n<p>Doar c\u0103, \u00een momentul \u00een care infrastructura pe care se bazeaz\u0103 fluxul t\u0103u de lucru ajunge sub controlul unei singure companii, apar \u00eentreb\u0103ri legitime despre transparen\u021b\u0103, direc\u021bie \u0219i sustenabilitate. Exact aici intr\u0103 \u00een scen\u0103 <strong>WP Composer<\/strong>: un repository Composer independent pentru pluginuri \u0219i teme WordPress, finan\u021bat de comunitate \u0219i dezvoltat de Roots.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">De ce conteaz\u0103 schimbarea asta (mai ales pentru echipele care folosesc Composer zilnic)<\/h2>\n\n\n\n<p>WPackagist a fost construit ini\u021bial de Outlandish \u0219i a fost \u00eentre\u021binut ani la r\u00e2nd. \u00cen timp \u00eens\u0103, proiectul a ajuns s\u0103 sufere din cauza lipsei de mentenan\u021b\u0103: update-uri lente, \u00eentre\u021binere limitat\u0103 \u0219i, practic, f\u0103r\u0103 input comunitar relevant.<\/p>\n\n\n\n<p>\u00cen martie 2026, WPackagist a fost achizi\u021bionat de WP Engine (companie de hosting sus\u021binut\u0103 de private equity). Pentru un element at\u00e2t de central \u00een workflow-ul WordPress + Composer, faptul c\u0103 e controlat de o singur\u0103 corpora\u021bie ridic\u0103 riscuri evidente: deciziile despre disponibilitate, costuri sau direc\u021bie pot ajunge s\u0103 fie luate \u201e\u00een boardroom\u201d, nu \u00een mod deschis, \u00eempreun\u0103 cu comunitatea.<\/p>\n\n\n\n<p>Mai mult, r\u0103m\u00e2ne neclar c\u00e2t de \u201eopen source\u201d mai este WPackagist \u00een practic\u0103: repository-ul GitHub public (https:\/\/github.com\/outlandishideas\/wpackagist) nu mai reflect\u0103 starea site-ului live.<\/p>\n\n\n\n<p>WP Composer porne\u0219te de la o premis\u0103 simpl\u0103: ar trebui s\u0103 existe o alternativ\u0103 <strong>transparent\u0103<\/strong>, <strong>finan\u021bat\u0103 de comunitate<\/strong> \u0219i construit\u0103 de oameni care lucreaz\u0103 cu WordPress la nivel de infrastructur\u0103 \u0219i tooling de mult timp.<\/p>\n\n\n\n<p>Dac\u0103 vrei o compara\u021bie detaliat\u0103 (performan\u021b\u0103, metadata, diferen\u021be de func\u021bionare), exist\u0103 \u0219i pagina dedicat\u0103: <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\">Ce ofer\u0103 concret WP Composer<\/h2>\n\n\n\n<p>WP Composer (https:\/\/wp-composer.com) este un repository Composer complet open source, \u00eentre\u021binut de Roots, care expune <strong>toate pluginurile \u0219i temele gratuite<\/strong> din directorul WordPress.org, instalabile direct cu Composer.<\/p>\n\n\n\n<p>Unul dintre cele mai practice detalii: <strong>naming-ul pachetelor<\/strong> este curat \u0219i previzibil:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Pluginuri: <code>wp-plugin\/*<\/code><\/li>\n\n\n<li>Teme: <code>wp-theme\/*<\/code><\/li>\n\n\n<li>F\u0103r\u0103 prefixele <code>wpackagist-plugin<\/code> \u0219i <code>wpackagist-theme<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>Configura\u021bia tipic\u0103 \u00een <code>composer.json<\/code> arat\u0103 a\u0219a:<\/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 este recomandat \u0219i \u00een combina\u021bie cu pachetele Roots pentru WordPress core:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><a href=\"https:\/\/wp-composer.com\/roots-wordpress\"><code>roots\/wordpress<\/code><\/a><\/li>\n\n\n<li><code>roots\/wordpress-full<\/code><\/li>\n\n\n<li><code>roots\/wordpress-no-content<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>\u00centr-un proiect Bedrock (https:\/\/roots.io\/bedrock\/), scenariul uzual este: <strong><code>roots\/wordpress<\/code> pentru core<\/strong> \u0219i <strong>WP Composer pentru pluginuri \u0219i teme<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migrarea de la WPackagist: pa\u0219i clari (\u0219i un script automat)<\/h2>\n\n\n\n<p>Dac\u0103 ai proiecte existente care folosesc WPackagist, schimbarea se face rapid. Varianta manual\u0103 are trei pa\u0219i.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Elimin\u0103 pachetele WPackagist existente<\/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) \u00cenlocuie\u0219te repository-ul \u00een configura\u021bia Composer<\/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) Cere din nou pachetele, cu naming-ul nou<\/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>Dac\u0103 preferi s\u0103 nu atingi manual <code>composer.json<\/code>, exist\u0103 un script de migrare care face update automat:<\/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>Iar dac\u0103 folose\u0219ti GitHub Action-ul Roots pentru a urm\u0103ri update-urile de pluginuri, acesta a fost redenumit din \u201eWPackagist Changelog Action\u201d \u00een <strong>WP Composer Changelog Action<\/strong>, cu suport complet pentru formatul <code>wp-plugin\/&lt;em&gt;<\/code> \u0219i <code>wp-theme\/&lt;\/em&gt;<\/code>: https:\/\/github.com\/roots\/wp-composer-changelog-action<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Performan\u021b\u0103: de ce WP Composer poate rezolva dependen\u021bele mult mai repede<\/h2>\n\n\n\n<p>Dincolo de partea de guvernan\u021b\u0103 \u0219i independen\u021b\u0103, WP Composer vine cu un avantaj foarte pragmatic: performan\u021b\u0103 mai bun\u0103 la <code>composer install<\/code> \/ <code>composer update<\/code>, \u00een special c\u00e2nd nu ai cache (cold resolve).<\/p>\n\n\n\n<p>Diferen\u021ba tehnic\u0103 major\u0103: WP Composer suport\u0103 protocolul <strong>Composer v2 <code>metadata-url<\/code><\/strong>, ceea ce permite lui Composer s\u0103 descarce metadata doar pentru pachetele de care are nevoie. WPackagist folose\u0219te \u00eenc\u0103 modelul mai vechi <strong><code>provider-includes<\/code><\/strong>, care oblig\u0103 Composer s\u0103 descarce fi\u0219iere de index mari, cu metadata pentru mii de pachete, \u00eenainte s\u0103 poat\u0103 rezolva dependen\u021bele.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Timp de resolve (cold, f\u0103r\u0103 cache)<\/h3>\n\n\n\n<p>Valorile de mai jos sunt pentru cold resolve (cache gol) &#8211; mai mic \u00eenseamn\u0103 mai bine:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 pluginuri: WP Composer <strong>0.7s<\/strong> vs WPackagist 12.3s (aprox. <strong>17x mai rapid<\/strong>)<\/li>\n\n\n<li>20 pluginuri: WP Composer <strong>1.1s<\/strong> vs WPackagist 19.0s (aprox. <strong>17x mai rapid<\/strong>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metadata \u0219i caching: diferen\u021be care se simt \u00een practic\u0103<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Composer v2 <code>metadata-url<\/code>: WP Composer <strong>Yes<\/strong>, WPackagist <strong>No<\/strong><\/li>\n\n\n<li>CDN caching: WP Composer folose\u0219te <code>public, max-age=300<\/code>, WPackagist folose\u0219te <code>no-cache, private<\/code><\/li>\n\n\n<li>Fi\u0219iere per-pachet: WP Composer folose\u0219te fi\u0219iere immutable, content-addressed, cache-uite pe termen nedefinit; WPackagist nu folose\u0219te content addressing<\/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\">Despre benchmark-uri<\/h4>\n\n\n<p>Testele au fost rulate dintr-o singur\u0103 loca\u021bie, folosind Composer 2.7+. Rezultatele pot varia \u00een func\u021bie de regiune \u0219i condi\u021biile de re\u021bea. Scripturile de benchmark sunt publice: https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Open source, cap-coad\u0103 (inclusiv deploy)<\/h2>\n\n\n\n<p>Un aspect important pentru orice infrastructur\u0103 critic\u0103: WP Composer este <strong>fully open source<\/strong>. Codul aplica\u021biei, documenta\u021bia \u0219i configura\u021bia de deployment sunt disponibile pe GitHub: https:\/\/github.com\/roots\/wp-composer<\/p>\n\n\n\n<p>Asta \u00eenseamn\u0103 inclusiv c\u0103 oricine poate contribui, poate face fork \u0219i poate rula propria instan\u021b\u0103, dac\u0103 are nevoie de asta (de exemplu, pentru cerin\u021be interne sau pentru redundan\u021b\u0103).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Finan\u021bare din comunitate (\u0219i ce \u00eenseamn\u0103 asta pentru independen\u021b\u0103)<\/h2>\n\n\n\n<p>WP Composer este finan\u021bat integral de comunitate prin GitHub Sponsors: https:\/\/github.com\/sponsors\/roots<\/p>\n\n\n\n<p>Sponsoriz\u0103rile sus\u021bin direct infrastructura, dezvoltarea \u0219i mentenan\u021ba WP Composer, dar \u0219i ecosistemul Roots \u00een ansamblu. Pentru echipele care se bazeaz\u0103 pe Composer \u00een proiecte WordPress, modelul acesta de finan\u021bare e un mod concret de a p\u0103stra tooling-ul independent \u0219i disponibil.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ideea principal\u0103: un repo Composer pentru WordPress ar trebui s\u0103 fie neutru \u0219i predictibil<\/h2>\n\n\n\n<p>WP Composer bifeaz\u0103 dou\u0103 lucruri pe care, ca dezvoltatori, le sim\u021bim imediat: un naming coerent (<code>wp-plugin\/&lt;em&gt;<\/code>, <code>wp-theme\/&lt;\/em&gt;<\/code>) \u0219i un salt semnificativ de performan\u021b\u0103 la rezolvarea dependen\u021belor datorit\u0103 <code>metadata-url<\/code>. La fel de important \u00eens\u0103 este cadrul: un proiect transparent, open source, finan\u021bat de comunitate, unde direc\u021bia nu depinde de o singur\u0103 entitate comercial\u0103.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referin\u021be \/ Surse<\/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\/tree\/main\/benchmarks\" target=\"_blank\" rel=\"noopener noreferrer\">Benchmarks (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\">Migration script (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:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a><\/li><li><a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">WPackagist GitHub repository<\/a><\/li><li><a href=\"https:\/\/github.com\/sponsors\/roots\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Sponsors (Roots)<\/a><\/li><li><a href=\"https:\/\/discourse.roots.io\/t\/-\/30235\" target=\"_blank\" rel=\"noopener noreferrer\">Roots Discourse discussion<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\/roots-wordpress\" target=\"_blank\" rel=\"noopener noreferrer\">Roots WordPress core packages (roots\/wordpress)<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Dac\u0103 \u00ee\u021bi gestionezi proiectele WordPress cu Composer, dependen\u021ba de un singur repo \u201ecentral\u201d conteaz\u0103 mai mult dec\u00e2t pare. WP Composer vine ca o alternativ\u0103 independent\u0103, open source \u0219i finan\u021bat\u0103 de comunitate, cu naming curat \u0219i timpi de resolve mult mai buni.<\/p>\n","protected":false},"author":32,"featured_media":246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[69,8,124,3],"class_list":["post-247","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ecosistem-wordpress","tag-bedrock","tag-composer","tag-pluginuri","tag-roots"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/media\/246"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/ro\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}