{"id":239,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/lv\/wp-composer-neatkarigs-composer-repozitorijs-wordpress-spraudniem-un-temam\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-neatkarigs-composer-repozitorijs-wordpress-spraudniem-un-temam","status":"publish","type":"post","link":"https:\/\/helloblog.io\/lv\/wp-composer-neatkarigs-composer-repozitorijs-wordpress-spraudniem-un-temam\/","title":{"rendered":"WP Composer: neatkar\u012bgs Composer repozitorijs WordPress spraud\u0146iem un t\u0113m\u0101m k\u0101 alternat\u012bva WPackagist"},"content":{"rendered":"\n<p>WordPress projektos, kur spraud\u0146us un t\u0113mas p\u0101rvaldi ar Composer, repozitorijs faktiski k\u013c\u016bst par da\u013cu no pieg\u0101des \u0137\u0113des (supply chain). Ilgu laiku de facto standarts bija WPackagist &#8211; daudziem tas vienk\u0101r\u0161i bija \u201ctas repozitorijs, ko ieliek composer.json un aizmirst\u201d. Ta\u010du situ\u0101cija ir main\u012bjusies, un l\u012bdz ar to ir v\u0113rts p\u0101rskat\u012bt savu iestat\u012bjumu.<\/p>\n\n\n\n<p>2026. gada mart\u0101 WPackagist non\u0101ca WP Engine (priv\u0101t\u0101 kapit\u0101la atbalst\u012bta hostinga uz\u0146\u0113muma) \u012bpa\u0161um\u0101. Kad tik centr\u0101la infrastrukt\u016bra WordPress + Composer darbpl\u016bsmai tiek kontrol\u0113ta vienas komercorganiz\u0101cijas rok\u0101s, rodas gan ilgtermi\u0146a neatkar\u012bbas, gan caursp\u012bd\u012bguma jaut\u0101jumi &#8211; \u012bpa\u0161i, ja l\u0113mumi par pieejam\u012bbu, cenu politiku vai virzienu var tikt pie\u0146emti aiz sl\u0113gt\u0101m durv\u012bm.<\/p>\n\n\n\n<p>\u0160aj\u0101 kontekst\u0101 par\u0101d\u012bjies <strong>WP Composer<\/strong> &#8211; neatkar\u012bgs, kopienas finans\u0113ts un piln\u012bb\u0101 atv\u0113rt\u0101 koda Composer repozitorijs WordPress spraud\u0146iem un t\u0113m\u0101m. To veido un uztur Roots komanda, un m\u0113r\u0137is ir skaidrs: nodro\u0161in\u0101t alternat\u012bvu, kas ir p\u0101rskat\u0101ma, uztur\u0113ta un nav pak\u013cauta viena uz\u0146\u0113muma kontrolei.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">K\u0101p\u0113c \u0161is ir svar\u012bgi WordPress izstr\u0101d\u0101t\u0101jiem, kas izmanto Composer<\/h2>\n\n\n\n<p>WPackagist savulaik izveidoja Outlandish un tas gadiem ilgi darboj\u0101s k\u0101 stabila b\u0101ze WordPress spraud\u0146u\/t\u0113mu instal\u0113\u0161anai caur Composer. Tom\u0113r v\u0113l\u0101k\u0101 period\u0101 uztur\u0113\u0161ana k\u013cuva gausa: atjaunin\u0101jumi bija l\u0113ni, uztur\u0113\u0161ana ierobe\u017eota, un kopienas iesaiste &#8211; minim\u0101la. P\u0113c ieg\u0101des ba\u017eas tikai pieauga, jo \u012bpa\u0161i ap atv\u0113rt\u0101 koda principiem un projekta atbilst\u012bbu tam, ko redzam publiskajos repozitorijos.<\/p>\n\n\n\n<p>Papildu sign\u0101ls: WPackagist publiskais GitHub repozitorijs vairs neatspogu\u013co to, kas re\u0101li str\u0101d\u0101 \u201cdz\u012bvaj\u0101\u201d servis\u0101. Ja r\u012bks ir kritisks ikdienas build procesam, izstr\u0101d\u0101t\u0101jiem ir svar\u012bgi saprast, kas tie\u0161i tiek palaists, k\u0101 tas tiek izv\u0113rsts un k\u0101di ir uztur\u0113\u0161anas principi.<\/p>\n\n\n\n<p>WP Composer pozicion\u0113jas k\u0101 tie\u0161i pret\u0113js modelis: caursp\u012bd\u012bgs, kopienas finans\u0113ts, ar piln\u012bb\u0101 publisku kodu un iesp\u0113ju ikvienam izveidot savu instanci, ja rodas nepiecie\u0161am\u012bba.<\/p>\n\n\n\n<p>Tehniskai sal\u012bdzin\u0101\u0161anai (veiktsp\u0113ja, metadati un at\u0161\u0137ir\u012bbas) ir sagatavota ar\u012b atsevi\u0161\u0137a lapa: <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\">Ko tie\u0161i nodro\u0161ina WP Composer<\/h2>\n\n\n\n<p>WP Composer ideja ir praktiska: dot iesp\u0113ju instal\u0113t <strong>katru bezmaksas spraudni un t\u0113mu no WordPress.org direktorijas<\/strong> caur Composer, bet ar sak\u0101rtotu un paredzamu package naming (pakot\u0146u nosaukumdo\u0161anu).<\/p>\n\n\n\n<p>Galven\u0101 izmai\u0146a, ko uzreiz jut\u012bsi ikdien\u0101: spraud\u0146iem tiek izmantots prefikss <code>wp-plugin\/&lt;em&gt;<\/code>, bet t\u0113m\u0101m &#8211; <code>wp-theme\/&lt;\/em&gt;<\/code>. Tas noz\u012bm\u0113, ka vairs nav j\u0101dz\u012bvo ar v\u0113sturiskajiem <code>wpackagist-plugin<\/code> un <code>wpackagist-theme<\/code> nosaukumiem.<\/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>Svar\u012bga nianse: <code>only<\/code> filtrs \u013cauj skaidri nodefin\u0113t, ka \u0161is repozitorijs paredz\u0113ts tie\u0161i spraud\u0146u un t\u0113mu paket\u0113m, nevis jebkam citam.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sader\u012bba ar Roots WordPress core pakotn\u0113m un Bedrock tipisku uzb\u016bvi<\/h3>\n\n\n\n<p>Ja tev projekt\u0101 ir Roots ekosist\u0113ma, WP Composer ir paredz\u0113ts k\u0101 rekomend\u0113tais repozitorijs lieto\u0161anai kop\u0101 ar WordPress core pakotn\u0113m: <a href=\"https:\/\/wp-composer.com\/roots-wordpress\"><code>roots\/wordpress<\/code><\/a>, <code>roots\/wordpress-full<\/code> un <code>roots\/wordpress-no-content<\/code>.<\/p>\n\n\n\n<p>Tipisks <a href=\"https:\/\/roots.io\/bedrock\/\">Bedrock<\/a> projekts izmanto <code>roots\/wordpress<\/code> WordPress kodolam, savuk\u0101rt spraud\u0146i un t\u0113mas n\u0101k no WP Composer. Rezult\u0101ts: struktur\u0113ts dependency management un maz\u0101k \u201croku darba\u201d serveru vid\u0113s, kur visu gribi reproduc\u0113t no composer.lock.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migr\u0101cija no WPackagist uz WP Composer<\/h2>\n\n\n\n<p>P\u0101reja p\u0113c b\u016bt\u012bbas ir tr\u012bs so\u013ci: (1) no\u0146em vec\u0101s <code>wpackagist-&lt;em&gt;<\/code> pakotnes, (2) nomaini repozitorija ierakstu, (3) pieprasi t\u0101s pa\u0161as pakotnes ar jauno <code>wp-plugin\/&lt;\/em&gt;<\/code> un <code>wp-theme\/*<\/code> naming.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) No\u0146em WPackagist pakotnes<\/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) Nomaini repozitoriju konfigur\u0101ciju<\/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) Pievieno pakotnes ar jauno nosaukumdo\u0161anu<\/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\">Autom\u0101tiska composer.json atjauno\u0161ana ar migr\u0101cijas skriptu<\/h3>\n\n\n\n<p>Ja ir vair\u0101ki projekti vai composer.json ir apjom\u012bgs, var izmantot gatavu migr\u0101cijas skriptu, kas autom\u0101tiski atjauno failu:<\/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>Ja izmanto GitHub Action spraud\u0146u atjaunin\u0101jumu izseko\u0161anai, ir p\u0101rd\u0113v\u0113ts ar\u012b iepriek\u0161\u0113jais WPackagist Changelog Action &#8211; tagad tas ir <a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\">WP Composer Changelog Action<\/a> ar pilnu atbalstu <code>wp-plugin\/&lt;em&gt;<\/code> un <code>wp-theme\/&lt;\/em&gt;<\/code> form\u0101tam.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Veiktsp\u0113ja: k\u0101p\u0113c WP Composer dependency resolve ir tik j\u016btami \u0101tr\u0101ks<\/h2>\n\n\n\n<p>WP Composer izmanto Composer v2 <code>metadata-url<\/code> protokolu, kas \u013cauj Composer klientam iel\u0101d\u0113t metadatus tikai t\u0101m pakotn\u0113m, kuras patie\u0161\u0101m ir vajadz\u012bgas konkr\u0113taj\u0101 dependency resolve proces\u0101. Pretstat\u0101 tam, WPackagist joproj\u0101m balst\u0101s uz vec\u0101ko <code>provider-includes<\/code> pieeju &#8211; tur Composer ir spiests vispirms lejupiel\u0101d\u0113t lielus indeksu failus ar metadatiem par t\u016bksto\u0161iem pakot\u0146u, pirms visp\u0101r var sak\u0101rtot atkar\u012bbas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Composer resolve laiki (cold resolve)<\/h3>\n\n\n\n<p>Cold resolve (bez cache) &#8211; jo maz\u0101k, jo lab\u0101k:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 spraud\u0146i: WP Composer <strong>0.7s<\/strong>, WPackagist 12.3s &#8211; <strong>17x<\/strong> \u0101tr\u0101k<\/li>\n\n\n<li>20 spraud\u0146i: WP Composer <strong>1.1s<\/strong>, WPackagist 19.0s &#8211; <strong>17x<\/strong> \u0101tr\u0101k<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metadati un ke\u0161o\u0161ana (caching)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Composer v2 <code>metadata-url<\/code>: WP Composer &#8211; <strong>Yes<\/strong>, WPackagist &#8211; No<\/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>Faili uz pakotni (per-package files): WP Composer &#8211; immutable, content-addressed, cache uz nenoteiktu laiku; WPackagist &#8211; nav 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\">Par benchmarkiem<\/h4>\n\n\n<p>M\u0113r\u012bjumi tika veikti no vienas lok\u0101cijas, izmantojot Composer 2.7+. Re\u0101lie rezult\u0101ti var at\u0161\u0137irties atkar\u012bb\u0101 no re\u0123iona un t\u012bkla apst\u0101k\u013ciem. Benchmark skripti ir publiski: https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Piln\u012bb\u0101 atv\u0113rt\u0101 koda projekts (un iesp\u0113ja palaist savu instanci)<\/h2>\n\n\n\n<p>WP Composer nav \u201cmelna kaste\u201d. Lietotnes kods, dokument\u0101cija un deployment konfigur\u0101cija ir atv\u0113rt\u0101 koda un pieejama GitHub: https:\/\/github.com\/roots\/wp-composer. Praktiski tas noz\u012bm\u0113 divas lietas: (1) kopiena var iesaist\u012bties ar pull requestiem un uzlabojumiem, (2) jebkur\u0161 var forkn\u0113t projektu un palaist savu instanci, ja organiz\u0101cij\u0101 ir pras\u012bba p\u0113c pilnas kontroles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kopienas finans\u0113jums k\u0101 neatkar\u012bbas pamats<\/h2>\n\n\n\n<p>Serviss tiek finans\u0113ts piln\u012bb\u0101 no kopienas caur GitHub Sponsors: https:\/\/github.com\/sponsors\/roots. \u0160is modelis tie\u0161i atbalsta infrastrukt\u016bru, izstr\u0101di un uztur\u0113\u0161anu &#8211; un vienlaikus pal\u012bdz saglab\u0101t repozitoriju neatkar\u012bgu un br\u012bvi pieejamu.<\/p>\n\n\n\n<p>Ja Composer ir b\u016btiska WordPress izstr\u0101des darba pl\u016bsmas da\u013ca (\u012bpa\u0161i CI\/CD un reproduc\u0113jamu buildu kontekst\u0101), neatkar\u012bga infrastrukt\u016bra nav \u201cnice to have\u201d &#8211; t\u0101 ir riska samazin\u0101\u0161ana ilgtermi\u0146\u0101.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u012asais kopsavilkums<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WP Composer ir neatkar\u012bgs, kopienas finans\u0113ts un piln\u012bb\u0101 atv\u0113rt\u0101 koda Composer repozitorijs WordPress spraud\u0146iem un t\u0113m\u0101m.<\/li>\n\n\n<li>Pakot\u0146u nosaukumdo\u0161ana ir vienk\u0101r\u0161\u0101ka: <code>wp-plugin\/&lt;em&gt;<\/code> spraud\u0146iem un <code>wp-theme\/&lt;\/em&gt;<\/code> t\u0113m\u0101m.<\/li>\n\n\n<li>Migr\u0101cija no WPackagist ir tie\u0161a: no\u0146em vec\u0101s pakotnes, nomaini repozitoriju un pieprasi pakotnes ar jauno naming (vai izmanto migr\u0101cijas skriptu).<\/li>\n\n\n<li>Veiktsp\u0113ja ir b\u016btiski lab\u0101ka, jo tiek izmantots Composer v2 <code>metadata-url<\/code> protokols un gudr\u0101ka ke\u0161o\u0161ana.<\/li>\n\n\n<li>Viss projekts ir publisks GitHub, un uztur\u0113\u0161ana balst\u0101s kopienas finans\u0113jum\u0101 caur GitHub Sponsors.<\/li>\n\n<\/ul>\n\n\n\n<p>Noder\u012bgas saites: <a href=\"https:\/\/wp-composer.com\">WP Composer<\/a>, repo endpoints: <code>https:\/\/repo.wp-composer.com<\/code>, sal\u012bdzin\u0101jums: https:\/\/wp-composer.com\/wp-composer-vs-wpackagist, un diskusija Roots Discourse: https:\/\/discourse.roots.io\/t\/-\/30235.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Atsauces \/ Avoti<\/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\">roots\/wp-composer-changelog-action<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/wp-composer benchmarks<\/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><li><a href=\"https:\/\/discourse.roots.io\/t\/-\/30235\" target=\"_blank\" rel=\"noopener noreferrer\">Discuss this post on Roots Discourse<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Ja WordPress spraud\u0146us un t\u0113mas instal\u0113 caur Composer, repozitorija izv\u0113le nav s\u012bkums. WP Composer pied\u0101v\u0101 caursp\u012bd\u012bgu, kopienas finans\u0113tu un atv\u0113rt\u0101 koda alternat\u012bvu WPackagist &#8211; ar t\u012br\u0101ku nosaukumdo\u0161anu un b\u016btiski \u0101tr\u0101ku dependency resolve.<\/p>\n","protected":false},"author":53,"featured_media":238,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[70,8,78,3],"class_list":["post-239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress-ekosistema","tag-bedrock","tag-composer","tag-devops","tag-roots"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/posts\/239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/comments?post=239"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/posts\/239\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/media\/238"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/media?parent=239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/categories?post=239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/lv\/wp-json\/wp\/v2\/tags?post=239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}