{"id":256,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/sv\/wp-composer-community-drivet-alternativ-till-wpackagist-for-wordpress-via-composer\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-community-drivet-alternativ-till-wpackagist-for-wordpress-via-composer","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sv\/wp-composer-community-drivet-alternativ-till-wpackagist-for-wordpress-via-composer\/","title":{"rendered":"WP Composer: ett community-drivet alternativ till WPackagist f\u00f6r WordPress via Composer"},"content":{"rendered":"\n<p>Om du bygger WordPress-projekt \u201cp\u00e5 riktigt\u201d (versionshantering, CI, reproducibla byggen) \u00e4r chansen stor att du f\u00f6r l\u00e4nge sedan landade i Composer-fl\u00f6det: core som dependency, plugins\/teman som dependencies och en tydlig separation mellan kod och milj\u00f6. I \u00f6ver ett decennium har WPackagist i praktiken varit standardv\u00e4gen f\u00f6r att f\u00e5 in WordPress.org-katalogens plugins och teman via Composer.<\/p>\n\n\n\n<p>I mars 2026 k\u00f6ptes WPackagist upp av WP Engine, ett private equity-backat hostingbolag. N\u00e4r en s\u00e5 central bit av verktygskedjan hamnar under kontroll av ett enskilt bolag blir det snabbt en fr\u00e5ga om l\u00e5ngsiktig tillg\u00e4nglighet, transparens och styrning. D\u00e4rf\u00f6r finns nu <strong>WP Composer<\/strong>: ett oberoende, community-finansierat och helt open source-baserat Composer-repository f\u00f6r WordPress-plugins och teman, byggt och underh\u00e5llet av Roots.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Varf\u00f6r det h\u00e4r spelar roll i Composer-fl\u00f6det f\u00f6r WordPress<\/h2>\n\n\n\n<p>WPackagist byggdes ursprungligen av Outlandish och drevs under m\u00e5nga \u00e5r. Mot slutet pr\u00e4glades projektet dock av bristande underh\u00e5ll: l\u00e5ngsamma uppdateringar, begr\u00e4nsad f\u00f6rvaltning och i praktiken inget meningsfullt community-inflytande. Uppk\u00f6pet av WP Engine f\u00f6rst\u00e4rker just de riskerna som m\u00e5nga WordPress-utvecklare redan k\u00e4nt av.<\/p>\n\n\n\n<p>N\u00e4r grundl\u00e4ggande utvecklar-infrastruktur \u00e4gs och styrs av en enda akt\u00f6r flyttas beslut om tillg\u00e4nglighet, priss\u00e4ttning och riktning fr\u00e5n det \u00f6ppna samtalet till styrelserum. Det blir dessutom oklart hur \u201copen\u201d en l\u00f6sning faktiskt \u00e4r n\u00e4r den publika koden inte l\u00e4ngre speglar produkten som k\u00f6rs \u2013 exempelvis n\u00e4r WPackagists GitHub-repo inte l\u00e4ngre reflekterar den live-site som Composer-klienter pratar med: <a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\">https:\/\/github.com\/outlandishideas\/wpackagist<\/a>.<\/p>\n\n\n\n<p>Po\u00e4ngen med WP Composer \u00e4r att ha ett alternativ som \u00e4r <strong>transparent<\/strong>, <strong>community-finansierat<\/strong> och byggt av folk som levt med WordPress + Composer-fl\u00f6det l\u00e4nge.<\/p>\n\n\n\n<p>F\u00f6r en praktisk j\u00e4mf\u00f6relse p\u00e5 prestanda, metadata och skillnader i implementation finns en dedikerad j\u00e4mf\u00f6relsesida: <a href=\"https:\/\/wp-composer.com\/wp-composer-vs-wpackagist\">https:\/\/wp-composer.com\/wp-composer-vs-wpackagist<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad WP Composer erbjuder<\/h2>\n\n\n\n<p>WP Composer exponerar <strong>alla gratis plugins och teman fr\u00e5n WordPress.org-katalogen<\/strong> som Composer-paket \u2013 med ett renare namnschema \u00e4n det vi vant oss vid med <code>wpackagist-plugin\/&lt;em&gt;<\/code> och <code>wpackagist-theme\/&lt;\/em&gt;<\/code>.<\/p>\n\n\n\n<p>Plugins installeras som <code>wp-plugin\/&lt;em&gt;<\/code> och teman som <code>wp-theme\/&lt;\/em&gt;<\/code>. Det g\u00f6r dependencies enklare att l\u00e4sa, mindre \u201cbrandade\u201d och mer konsekventa.<\/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>Ett viktigt detaljval h\u00e4r \u00e4r <code>only<\/code>-filtreringen som begr\u00e4nsar repositoryt till just <code>wp-plugin\/&lt;em&gt;<\/code> och <code>wp-theme\/&lt;\/em&gt;<\/code>, vilket minskar risken f\u00f6r krockar och g\u00f6r intent tydligare.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">T\u00e4nkt att anv\u00e4ndas ihop med Roots WordPress core-paket<\/h3>\n\n\n\n<p>WP Composer \u00e4r \u00e4ven t\u00e4nkt som den rekommenderade repositoryt att k\u00f6ra tillsammans med Roots WordPress core-paket: <code>roots\/wordpress<\/code>, <code>roots\/wordpress-full<\/code> och <code>roots\/wordpress-no-content<\/code>. Det finns en samlingssida f\u00f6r dessa: <a href=\"https:\/\/wp-composer.com\/roots-wordpress\">https:\/\/wp-composer.com\/roots-wordpress<\/a>.<\/p>\n\n\n\n<p>I ett typiskt Bedrock-uppl\u00e4gg anv\u00e4nds <code>roots\/wordpress<\/code> f\u00f6r WordPress core och WP Composer som k\u00e4lla f\u00f6r plugins och teman. Bedrock: <a href=\"https:\/\/roots.io\/bedrock\/\">https:\/\/roots.io\/bedrock\/<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migrera fr\u00e5n WPackagist: tre kommandon (eller ett script)<\/h2>\n\n\n\n<p>Om du redan har ett projekt som pekar mot WPackagist \u00e4r bytet ganska rakt p\u00e5 sak. Grundid\u00e9n \u00e4r: ta bort gamla <code>wpackagist-&lt;em&gt;<\/code> dependencies, byt repository-URL och installera om med de nya paketen (<code>wp-plugin\/&lt;\/em&gt;<\/code>, <code>wp-theme\/*<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Ta bort dina wpackagist-paket<\/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) Byt repository-konfiguration<\/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) Installera samma paket med nya namn<\/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\">Alternativ: k\u00f6r migreringsscript som uppdaterar composer.json automatiskt<\/h3>\n\n\n\n<p>Vill du slippa hand\u00e4ndringar finns ett script som uppdaterar din <code>composer.json<\/code> \u00e5t dig: <a href=\"https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh\">https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh<\/a>. Du kan h\u00e4mta och k\u00f6ra det s\u00e5 h\u00e4r:<\/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<h3 class=\"wp-block-heading\">GitHub Action f\u00f6r changelogs har bytt namn<\/h3>\n\n\n\n<p>Om du anv\u00e4nder Roots GitHub Action f\u00f6r att tracka plugin-uppdateringar \u00e4r den uppdaterad och omd\u00f6pt fr\u00e5n \u201cWPackagist Changelog Action\u201d till <strong>WP Composer Changelog Action<\/strong>, med fullt st\u00f6d f\u00f6r <code>wp-plugin\/&lt;em&gt;<\/code> och <code>wp-theme\/&lt;\/em&gt;<\/code>: <a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\">https:\/\/github.com\/roots\/wp-composer-changelog-action<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prestanda: snabbare dependency resolution med Composer v2 metadata-url<\/h2>\n\n\n\n<p>Den stora tekniska vinsten i WP Composer \u00e4r st\u00f6d f\u00f6r Composer v2:s <strong><code>metadata-url<\/code>-protokoll<\/strong>. Det g\u00f6r att Composer kan h\u00e4mta metadata endast f\u00f6r de paket som faktiskt beh\u00f6vs f\u00f6r att l\u00f6sa dina dependencies.<\/p>\n\n\n\n<p>WPackagist anv\u00e4nder i sammanhanget en \u00e4ldre modell, <strong><code>provider-includes<\/code><\/strong>, d\u00e4r Composer tvingas ladda ner stora indexfiler med metadata f\u00f6r tusentals paket innan dependency resolution ens kan b\u00f6rja p\u00e5 allvar. Resultatet blir segare \u201ccold resolves\u201d (dvs. utan cache), s\u00e4rskilt i projekt med fler plugins.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Composer resolve-tider (cold resolve, l\u00e4gre \u00e4r b\u00e4ttre)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 plugins: <strong>WP Composer 0,7s<\/strong> vs WPackagist 12,3s (\u2248 <strong>17\u00d7 snabbare<\/strong>)<\/li>\n\n\n<li>20 plugins: <strong>WP Composer 1,1s<\/strong> vs WPackagist 19,0s (\u2248 <strong>17\u00d7 snabbare<\/strong>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metadata och caching: skillnader som m\u00e4rks i CI och vid noll cache<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Composer v2 <code>metadata-url<\/code>: WP Composer <strong>Ja<\/strong>, WPackagist <strong>Nej<\/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-filer: WP Composer \u00e4r immutable, content-addressed och kan cacheas \u201cf\u00f6r evigt\u201d; WPackagist \u00e4r inte content-addressed<\/li>\n\n<\/ul>\n\n\n\n<p>Benchmarksen \u00e4r k\u00f6rda fr\u00e5n en plats med Composer 2.7+ och resultaten kan variera beroende p\u00e5 region och n\u00e4tverksf\u00f6ruts\u00e4ttningar. Sj\u00e4lva benchmark-scriptet finns \u00f6ppet h\u00e4r: <a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\">https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Helt open source \u2013 p\u00e5 riktigt<\/h2>\n\n\n\n<p>WP Composer \u00e4r inte bara \u201cgratis att anv\u00e4nda\u201d, utan projektet \u00e4r byggt med full transparens: applikationskod, dokumentation och deployment-konfiguration finns \u00f6ppet p\u00e5 GitHub: <a href=\"https:\/\/github.com\/roots\/wp-composer\">https:\/\/github.com\/roots\/wp-composer<\/a>.<\/p>\n\n\n\n<p>Det inneb\u00e4r ocks\u00e5 att vem som helst kan bidra, forka och drifta en egen instans om man vill.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Community-finansiering via GitHub Sponsors<\/h2>\n\n\n\n<p>Driften finansieras helt av communityt via GitHub Sponsors: <a href=\"https:\/\/github.com\/sponsors\/roots\">https:\/\/github.com\/sponsors\/roots<\/a>. Sponsring g\u00e5r direkt till infrastruktur, utveckling och underh\u00e5ll av WP Composer samt Roots-ekosystemet i stort.<\/p>\n\n\n\n<p>N\u00e4r man bygger WordPress med Composer blir repositoryt en del av sj\u00e4lva byggkedjan. Att h\u00e5lla den biten oberoende och fritt tillg\u00e4nglig \u00e4r i praktiken en investering i f\u00f6ruts\u00e4gbara leveranser, stabil CI och ett mer resilient WordPress-ekosystem.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Snabb check: vad du faktiskt beh\u00f6ver \u00e4ndra<\/h4>\n\n\n<p>Byt fr\u00e5n <code>wpackagist-plugin\/&lt;em&gt;<\/code> och <code>wpackagist-theme\/&lt;\/em&gt;<\/code> till <code>wp-plugin\/&lt;em&gt;<\/code> och <code>wp-theme\/&lt;\/em&gt;<\/code>, uppdatera repository-URL till <code>https:\/\/repo.wp-composer.com<\/code> och installera om dependencies.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Sammanfattning<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WP Composer \u00e4r ett oberoende, community-finansierat och open source-baserat Composer-repository f\u00f6r WordPress-plugins och teman: <a href=\"https:\/\/wp-composer.com\">https:\/\/wp-composer.com<\/a>.<\/li>\n\n\n<li>Paketnamnen \u00e4r renare: <code>wp-plugin\/&lt;em&gt;<\/code> och <code>wp-theme\/&lt;\/em&gt;<\/code> ist\u00e4llet f\u00f6r WPackagists prefix.<\/li>\n\n\n<li>St\u00f6d f\u00f6r Composer v2 <code>metadata-url<\/code> ger markant snabbare cold resolves (exempel: ~17\u00d7 snabbare i givna benchmarks).<\/li>\n\n\n<li>Migrering kan g\u00f6ras med tre Composer-kommandon eller via ett script.<\/li>\n\n\n<li>Koden (inkl. deployment) ligger \u00f6ppet p\u00e5 GitHub och kan forkas\/driftas av vem som helst.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Referenser \/ K\u00e4llor<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/roots.io\/introducing-wp-composer-as-a-wpackagist-replacement\/\" target=\"_blank\" rel=\"noopener noreferrer\">Introducing WP Composer as a WPackagist Replacement<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer<\/a><\/li><li><a href=\"https:\/\/wp-composer.com\/wp-composer-vs-wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer vs WPackagist<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/wp-composer<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/blob\/main\/scripts\/migrate-from-wpackagist.sh\" target=\"_blank\" rel=\"noopener noreferrer\">migrate-from-wpackagist.sh<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer-changelog-action\" target=\"_blank\" rel=\"noopener noreferrer\">WP Composer Changelog Action<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\" target=\"_blank\" rel=\"noopener noreferrer\">Benchmarks (roots\/wp-composer)<\/a><\/li><li><a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">WPackagist (GitHub repository)<\/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 packages<\/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 har l\u00e4nge varit standarden f\u00f6r att installera WordPress-plugins och teman via Composer \u2013 men n\u00e4r infrastrukturen blir f\u00f6retagsstyrd beh\u00f6ver vi ett \u00f6ppet alternativ. WP Composer \u00e4r en frist\u00e5ende, open source-baserad Composer-repo med snabbare resolves och renare paketnamn.<\/p>\n","protected":false},"author":62,"featured_media":255,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[68,8,21,12],"class_list":["post-256","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-bedrock","tag-composer","tag-open-source","tag-plugins"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/comments?post=256"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/256\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media\/255"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media?parent=256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/categories?post=256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/tags?post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}