{"id":227,"date":"2026-03-16T00:00:00","date_gmt":"2026-03-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/bg\/wp-composer-nezavisim-zamestitel-na-wpackagist-za-wordpress-composer\/"},"modified":"2026-03-16T00:00:00","modified_gmt":"2026-03-15T23:00:00","slug":"wp-composer-nezavisim-zamestitel-na-wpackagist-za-wordpress-composer","status":"publish","type":"post","link":"https:\/\/helloblog.io\/bg\/wp-composer-nezavisim-zamestitel-na-wpackagist-za-wordpress-composer\/","title":{"rendered":"WP Composer: \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c, community-funded \u0437\u0430\u043c\u0435\u0441\u0442\u0438\u0442\u0435\u043b \u043d\u0430 WPackagist \u0437\u0430 WordPress \u043f\u0430\u043a\u0435\u0442\u0438 \u0432 Composer"},"content":{"rendered":"\n<p>\u0410\u043a\u043e \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0448 WordPress \u043f\u0440\u043e\u0435\u043a\u0442\u0438 \u0441 Composer, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e WPackagist \u0435 \u0431\u0438\u043b \u0432 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0430 \u043d\u0430 workflow-\u0430 \u0442\u0438 \u0441 \u0433\u043e\u0434\u0438\u043d\u0438. \u0420\u0435\u0430\u043b\u043d\u043e \u0442\u043e\u0439 \u0441\u0435 \u043f\u0440\u0435\u0432\u044a\u0440\u043d\u0430 \u0432 \u0434\u0435 \u0444\u0430\u043a\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (Composer repository) \u0437\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043b\u044a\u0433\u0438\u043d\u0438 \u0438 \u0442\u0435\u043c\u0438 \u043e\u0442 WordPress.org \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0442\u0430, \u043a\u043e\u0433\u0430\u0442\u043e \u0438\u0441\u043a\u0430\u0448 dependency management \u0438\u0437\u0432\u044a\u043d wp-admin.<\/p>\n\n\n\n<p>\u041f\u0440\u0435\u0437 \u043c\u0430\u0440\u0442 2026 \u0433. WPackagist \u0431\u0435\u0448\u0435 \u043f\u0440\u0438\u0434\u043e\u0431\u0438\u0442 \u043e\u0442 WP Engine &#8211; \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u0435\u043d\u0430 \u043e\u0442 private equity. \u0422\u043e\u0432\u0430 \u0432\u0434\u0438\u0433\u0430 \u0441\u044a\u0432\u0441\u0435\u043c \u0440\u0435\u0437\u043e\u043d\u043d\u0438 \u0432\u044a\u043f\u0440\u043e\u0441\u0438 \u0437\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0442\u0430 \u043d\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u044f\u0442\u043e \u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u0437\u0430 \u043e\u0433\u0440\u043e\u043c\u043d\u0430 \u0447\u0430\u0441\u0442 \u043e\u0442 WordPress \u0435\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0430, \u0438 \u0437\u0430 \u0442\u043e\u0432\u0430 \u043a\u0430\u043a \u0441\u0435 \u0432\u0437\u0438\u043c\u0430\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0442\u0430 \u043e\u043a\u043e\u043b\u043e \u043d\u0430\u043b\u0438\u0447\u043d\u043e\u0441\u0442, \u043f\u043e\u0441\u043e\u043a\u0430 \u0438 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430. \u041d\u0430 \u0442\u043e\u0437\u0438 \u0444\u043e\u043d Roots \u0438\u0437\u043b\u044f\u0437\u043e\u0445\u0430 \u0441 \u0430\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430: <strong>WP Composer<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u041a\u0430\u043a\u0432\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0432\u0430 WP Composer \u0438 \u0437\u0430\u0449\u043e \u0435 \u0432\u0430\u0436\u0435\u043d<\/h2>\n\n\n\n<p><a href=\"https:\/\/wp-composer.com\">WP Composer<\/a> \u0435 <strong>\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c, \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u0430\u043d \u043e\u0442 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430 \u0438 \u0438\u0437\u0446\u044f\u043b\u043e open source Composer repository<\/strong> \u0437\u0430 WordPress \u043f\u043b\u044a\u0433\u0438\u043d\u0438 \u0438 \u0442\u0435\u043c\u0438. \u041f\u0440\u043e\u0435\u043a\u0442\u044a\u0442 \u0435 \u0438\u0437\u0433\u0440\u0430\u0434\u0435\u043d \u0438 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u043d \u043e\u0442 Roots \u0438 \u0435 \u0437\u0430\u043c\u0438\u0441\u043b\u0435\u043d \u043a\u0430\u0442\u043e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u044f\u0442\u043e \u0434\u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438 \u043e\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0442\u0430 \u043d\u0430 \u0435\u0434\u043d\u0430 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u044f.<\/p>\n\n\n\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 WPackagist \u0435 \u0441\u044a\u0437\u0434\u0430\u0434\u0435\u043d \u043e\u0442 Outlandish \u0438 \u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u043d \u0441 \u0433\u043e\u0434\u0438\u043d\u0438, \u043d\u043e \u0432 \u043f\u043e-\u043a\u044a\u0441\u043d\u0438\u044f \u0441\u0438 \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430\u043f\u043e\u0447\u043d\u0430 \u0434\u0430 \u043b\u0438\u0447\u0438 \u0437\u0430\u043d\u0435\u043c\u0430\u0440\u044f\u0432\u0430\u043d\u0435: \u043f\u043e-\u0431\u0430\u0432\u043d\u0438 \u043e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0438\u044f, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430 \u0438 \u043b\u0438\u043f\u0441\u0430 \u043d\u0430 \u0440\u0435\u0430\u043b\u0435\u043d community input. \u0421\u043b\u0435\u0434 \u043f\u0440\u0438\u0434\u043e\u0431\u0438\u0432\u0430\u043d\u0435\u0442\u043e \u043f\u0440\u0438\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u044f\u0442\u0430 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0441\u0435 \u0437\u0430\u0434\u044a\u043b\u0431\u043e\u0447\u0430\u0432\u0430\u0442 &#8211; \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u0438 \u043e\u043a\u043e\u043b\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0442\u0430: \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0438\u044f\u0442 GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 WPackagist (<a href=\"https:\/\/github.com\/outlandishideas\/wpackagist\">https:\/\/github.com\/outlandishideas\/wpackagist<\/a>) \u0432\u0435\u0447\u0435 \u043d\u0435 \u043e\u0442\u0440\u0430\u0437\u044f\u0432\u0430 \u043a\u043e\u0440\u0435\u043a\u0442\u043d\u043e \u0436\u0438\u0432\u0438\u044f \u0441\u0430\u0439\u0442.<\/p>\n\n\n\n<p>\u041a\u043e\u0433\u0430\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u0435\u043d developer tooling \u0441\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0430 \u043e\u0442 \u0435\u0434\u0438\u043d \u0438\u0433\u0440\u0430\u0447, \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430 \u0433\u0443\u0431\u0438 \u0433\u043b\u0430\u0441: \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0442\u0430 \u0441\u0435 \u043c\u0435\u0441\u0442\u044f\u0442 \u043e\u0442 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430 \u0434\u0438\u0441\u043a\u0443\u0441\u0438\u044f \u043a\u044a\u043c \u201e\u0437\u0430\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u201c \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0438. \u0417\u0430\u0442\u043e\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0442\u0430 \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0442\u0430 \u0442\u0443\u043a \u043d\u0435 \u0441\u0430 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u044f, \u0430 \u043f\u0440\u0430\u0433\u043c\u0430\u0442\u0438\u0447\u0435\u043d \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u043d\u0433 \u0440\u0438\u0441\u043a.<\/p>\n\n\n\n<p>Roots \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0442 \u0438 \u0434\u0435\u0442\u0430\u0439\u043b\u043d\u0430 \u0441\u044a\u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0430 WP Composer \u0438 WPackagist (performance, metadata \u0438 \u0440\u0430\u0437\u043b\u0438\u043a\u0438 \u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u0442\u043e): <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\">\u041a\u0430\u043a\u0432\u043e \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430 WP Composer<\/h2>\n\n\n\n<p>WP Composer \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044f <strong>\u0432\u0441\u0435\u043a\u0438 \u0431\u0435\u0437\u043f\u043b\u0430\u0442\u0435\u043d \u043f\u043b\u044a\u0433\u0438\u043d \u0438 \u0442\u0435\u043c\u0430 \u043e\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u043d\u0430 WordPress.org<\/strong>, \u043a\u0430\u0442\u043e \u0433\u0438 \u043f\u0440\u0430\u0432\u0438 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0438\u0440\u0443\u0435\u043c\u0438 \u043f\u0440\u0435\u0437 Composer. \u041a\u043b\u044e\u0447\u043e\u0432\u043e\u0442\u043e \u0435, \u0447\u0435 \u0438\u0434\u0432\u0430 \u0441 \u043f\u043e-\u0447\u0438\u0441\u0442\u043e \u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435 \u0438 \u043c\u043e\u0434\u0435\u0440\u043d\u0438 Composer \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0438 \u0437\u0430 metadata.<\/p>\n\n\n\n<p>\u041d\u0430\u0439-\u043e\u0441\u0435\u0437\u0430\u0435\u043c\u0430\u0442\u0430 \u043f\u0440\u043e\u043c\u044f\u043d\u0430 \u0437\u0430 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u0430\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430: \u043f\u043b\u044a\u0433\u0438\u043d\u0438\u0442\u0435 \u0441\u0430 \u043f\u043e\u0434 <code>wp-plugin\/&lt;em&gt;<\/code>, \u0430 \u0442\u0435\u043c\u0438\u0442\u0435 \u043f\u043e\u0434 <code>wp-theme\/&lt;\/em&gt;<\/code>. \u0422\u043e\u0435\u0441\u0442 &#8211; \u043a\u0440\u0430\u0439 \u043d\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0438\u0442\u0435 <code>wpackagist-plugin<\/code> \u0438 <code>wpackagist-theme<\/code>.<\/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 \u0435 \u0438 \u043f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0438\u0442\u0435\u043b\u043d\u043e\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043a\u043e\u0433\u0430\u0442\u043e \u0433\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0430\u0448 \u0441 \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435 \u043d\u0430 Roots \u0437\u0430 WordPress core &#8211; <a href=\"https:\/\/wp-composer.com\/roots-wordpress\"><code>roots\/wordpress<\/code><\/a>, <code>roots\/wordpress-full<\/code> \u0438 <code>roots\/wordpress-no-content<\/code>. \u0412 \u0442\u0438\u043f\u0438\u0447\u0435\u043d <a href=\"https:\/\/roots.io\/bedrock\/\">Bedrock<\/a> \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u043e\u0432\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0432\u0430: <code>roots\/wordpress<\/code> \u0437\u0430 core \u0438 WP Composer \u0437\u0430 \u043f\u043b\u044a\u0433\u0438\u043d\u0438\/\u0442\u0435\u043c\u0438.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043e\u0442 WPackagist \u043a\u044a\u043c WP Composer (\u0441\u0442\u044a\u043f\u043a\u0430 \u043f\u043e \u0441\u0442\u044a\u043f\u043a\u0430)<\/h2>\n\n\n\n<p>\u0410\u043a\u043e \u0432\u0435\u0447\u0435 \u0438\u043c\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 WPackagist, \u043f\u0440\u0435\u043c\u0438\u043d\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u0435 \u0431\u0443\u043a\u0432\u0430\u043b\u043d\u043e \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0438. \u0418\u0434\u0435\u044f\u0442\u0430 \u0435: (1) \u043c\u0430\u0445\u0430\u0448 \u0441\u0442\u0430\u0440\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442\u0438 \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0438\u0442\u0435 \u043d\u0430 WPackagist, (2) \u0441\u043c\u0435\u043d\u044f\u0448 repository \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0442\u0430, (3) \u0434\u043e\u0431\u0430\u0432\u044f\u0448 \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e, \u043d\u043e \u0441 \u043d\u043e\u0432\u043e\u0442\u043e \u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0435.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) \u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 wpackagist \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435<\/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) \u0421\u043c\u0435\u043d\u0438 repository \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0442\u0430<\/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) \u0414\u043e\u0431\u0430\u0432\u0438 \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435 \u0441 \u043d\u043e\u0432\u043e\u0442\u043e \u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0435<\/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<h3 class=\"wp-block-heading\">\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430: \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0430 composer.json<\/h3>\n\n\n\n<p>Roots \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0442 \u0438 shell script, \u043a\u043e\u0439\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u044f\u0432\u0430 <code>composer.json<\/code>: <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>.<\/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>\u0410\u043a\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0448 GitHub Action-\u0430 \u043d\u0430 Roots \u0437\u0430 \u0441\u043b\u0435\u0434\u0435\u043d\u0435 \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043b\u044a\u0433\u0438\u043d\u0438\u0442\u0435, \u0438\u043c\u0430\u0439 \u043f\u0440\u0435\u0434\u0432\u0438\u0434 \u0438 \u043f\u0440\u043e\u043c\u044f\u043d\u0430 \u0432 \u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0435\u0442\u043e: WPackagist Changelog Action \u0432\u0435\u0447\u0435 \u0435 <strong>WP Composer Changelog Action<\/strong> \u0438 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 \u0438\u0437\u0446\u044f\u043b\u043e \u043d\u043e\u0432\u0438\u0442\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438 <code>wp-plugin\/&lt;em&gt;<\/code> \u0438 <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\">Performance: \u0437\u0430\u0449\u043e WP Composer \u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u043f\u043e-\u0431\u044a\u0440\u0437<\/h2>\n\n\n\n<p>WP Composer \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 <strong>Composer v2 <code>metadata-url<\/code> \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430<\/strong>, \u043a\u043e\u0439\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u043d\u0430 Composer \u0434\u0430 \u0438\u0437\u0442\u0435\u0433\u043b\u044f metadata \u0441\u0430\u043c\u043e \u0437\u0430 \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0440\u0435\u0430\u043b\u043d\u043e \u0441\u0430 \u043d\u0443\u0436\u043d\u0438 \u0437\u0430 dependency resolution.<\/p>\n\n\n\n<p>\u041f\u0440\u0438 WPackagist \u043a\u0430\u0440\u0442\u0438\u043d\u0430\u0442\u0430 \u0435 \u043f\u043e-\u0441\u0442\u0430\u0440\u0430\u0442\u0430: <code>provider-includes<\/code> \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u0440\u0438 \u043a\u043e\u0439\u0442\u043e Composer \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0432\u0430\u043b\u0438 \u0433\u043e\u043b\u0435\u043c\u0438 index \u0444\u0430\u0439\u043b\u043e\u0432\u0435 \u0441 metadata \u0437\u0430 \u0445\u0438\u043b\u044f\u0434\u0438 \u043f\u0430\u043a\u0435\u0442\u0438, \u043f\u0440\u0435\u0434\u0438 \u0438\u0437\u043e\u0431\u0449\u043e \u0434\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\u0442\u0435 \u0442\u0438. \u0422\u043e\u0432\u0430 \u0441\u0435 \u0443\u0441\u0435\u0449\u0430 \u0432\u0435\u0434\u043d\u0430\u0433\u0430 \u043f\u0440\u0438 \u201e\u0441\u0442\u0443\u0434\u0435\u043d\u201c resolve (\u0431\u0435\u0437 cache) \u0438 \u043f\u0440\u0438 CI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0412\u0440\u0435\u043c\u0435\u043d\u0430 \u0437\u0430 resolve (cold resolve, \u0431\u0435\u0437 cache)<\/h3>\n\n\n\n<p>\u041f\u043e-\u043d\u0438\u0441\u043a\u043e \u0435 \u043f\u043e-\u0434\u043e\u0431\u0440\u0435. \u0414\u0430\u043d\u043d\u0438\u0442\u0435 \u043f\u043e-\u0434\u043e\u043b\u0443 \u0441\u0430 \u0437\u0430 Composer 2.7+.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>10 \u043f\u043b\u044a\u0433\u0438\u043d\u0430: WP Composer <strong>0.7s<\/strong> \u0441\u0440\u0435\u0449\u0443 WPackagist 12.3s (\u043e\u043a\u043e\u043b\u043e <strong>17x<\/strong> \u043f\u043e-\u0431\u044a\u0440\u0437\u043e)<\/li>\n\n\n<li>20 \u043f\u043b\u044a\u0433\u0438\u043d\u0430: WP Composer <strong>1.1s<\/strong> \u0441\u0440\u0435\u0449\u0443 WPackagist 19.0s (\u043e\u043a\u043e\u043b\u043e <strong>17x<\/strong> \u043f\u043e-\u0431\u044a\u0440\u0437\u043e)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Metadata \u0438 caching \u0440\u0430\u0437\u043b\u0438\u043a\u0438<\/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>Per-package \u0444\u0430\u0439\u043b\u043e\u0432\u0435: WP Composer &#8211; immutable, content-addressed, cached indefinitely; WPackagist &#8211; not 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\">\u0411\u0435\u043b\u0435\u0436\u043a\u0430 \u0437\u0430 benchmark-\u0438\u0442\u0435<\/h4>\n\n\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u0435\u0442\u0435 \u0441\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0438 \u043e\u0442 \u0435\u0434\u043d\u0430 \u043b\u043e\u043a\u0430\u0446\u0438\u044f \u0441 Composer 2.7+. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0438 \u0441\u0430 \u0440\u0430\u0437\u043b\u0438\u043a\u0438 \u043f\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0438 \u0438 \u043c\u0440\u0435\u0436\u043e\u0432\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. Benchmark \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0435\u0442\u0435 \u0441\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0438: https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u0418\u0437\u0446\u044f\u043b\u043e open source (\u0438 \u0444\u043e\u0440\u043a\u0432\u0430\u0435\u043c\u043e)<\/h2>\n\n\n\n<p>\u0426\u0435\u043b\u0438\u044f\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 &#8211; application code, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 deployment \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f &#8211; \u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043d \u043a\u0430\u0442\u043e open source \u0432 GitHub: <a href=\"https:\/\/github.com\/roots\/wp-composer\">https:\/\/github.com\/roots\/wp-composer<\/a>. \u0422\u043e\u0432\u0430 \u043d\u0435 \u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0442\u0440\u0438\u043d\u0430: \u0432\u0441\u0435\u043a\u0438 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0444\u043e\u0440\u043a\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0434\u0430 \u043f\u043e\u0434\u043a\u0430\u0440\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u044f, \u0430\u043a\u043e \u0438\u043c\u0430 \u043d\u0443\u0436\u0434\u0430 \u0438\u043b\u0438 \u0438\u0441\u043a\u0430 \u0434\u0430 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0442\u0430.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0424\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u0430\u043d\u0435 \u043e\u0442 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430<\/h2>\n\n\n\n<p>WP Composer \u0441\u0435 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u0430 \u0438\u0437\u0446\u044f\u043b\u043e \u043e\u0442 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430 \u0447\u0440\u0435\u0437 GitHub Sponsors: <a href=\"https:\/\/github.com\/sponsors\/roots\">https:\/\/github.com\/sponsors\/roots<\/a>. \u0422\u043e\u0432\u0430 \u043f\u043e\u043a\u0440\u0438\u0432\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0442\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0442\u0430 \u0438 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430\u0442\u0430 &#8211; \u0441 \u0438\u0434\u0435\u044f\u0442\u0430 tooling-\u044a\u0442 \u0434\u0430 \u043e\u0441\u0442\u0430\u043d\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c \u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0434\u043e\u0441\u0442\u044a\u043f\u0435\u043d \u0437\u0430 \u0432\u0441\u0438\u0447\u043a\u0438, \u043a\u043e\u0438\u0442\u043e \u0440\u0430\u0437\u0447\u0438\u0442\u0430\u0442 \u043d\u0430 Composer \u0432 WordPress.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u041d\u0430\u043a\u0440\u0430\u0442\u043a\u043e<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WP Composer \u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c Composer repository \u0437\u0430 WordPress \u043f\u043b\u044a\u0433\u0438\u043d\u0438 \u0438 \u0442\u0435\u043c\u0438, \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u043d \u043e\u0442 Roots \u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u0430\u043d \u043e\u0442 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430.<\/li>\n\n\n<li>\u041f\u0430\u043a\u0435\u0442\u0438\u0442\u0435 \u0441\u0430 \u0441 \u0447\u0438\u0441\u0442\u0438 \u0438\u043c\u0435\u043d\u0430: <code>wp-plugin\/&lt;em&gt;<\/code> \u0438 <code>wp-theme\/&lt;\/em&gt;<\/code> (\u0431\u0435\u0437 <code>wpackagist-<\/code> \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0438).<\/li>\n\n\n<li>\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u043e\u0442 WPackagist \u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043d\u0430: remove \u2192 swap repository \u2192 require \u0441 \u043d\u043e\u0432\u0438\u0442\u0435 \u0438\u043c\u0435\u043d\u0430 (\u0438\u043b\u0438 \u043f\u0440\u0435\u0437 \u0433\u043e\u0442\u043e\u0432\u0438\u044f migration script).<\/li>\n\n\n<li>\u041f\u043e performance \u043b\u0438\u043d\u0438\u044f WP Composer \u043f\u0435\u0447\u0435\u043b\u0438 \u0441 Composer v2 <code>metadata-url<\/code>, \u043f\u043e-\u0434\u043e\u0431\u0440\u043e caching \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u043f\u043e-\u0431\u044a\u0440\u0437\u0438 cold resolve \u0432\u0440\u0435\u043c\u0435\u043d\u0430.<\/li>\n\n\n<li>\u0426\u0435\u043b\u0438\u044f\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0435 open source \u0438 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0444\u043e\u0440\u043a\u043d\u0430\u0442 \u0438 \u043f\u0443\u0441\u043d\u0430\u0442 \u043a\u0430\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043f\u0440\u0438 \u043d\u0443\u0436\u0434\u0430.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>\u041f\u0440\u0435\u043f\u0440\u0430\u0442\u043a\u0438 \/ \u0418\u0437\u0442\u043e\u0447\u043d\u0438\u0446\u0438<\/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\/outlandishideas\/wpackagist\" target=\"_blank\" rel=\"noopener noreferrer\">WPackagist GitHub repository<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-composer\/tree\/main\/benchmarks\" target=\"_blank\" rel=\"noopener noreferrer\">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><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>WPackagist \u0434\u044a\u043b\u0433\u0438 \u0433\u043e\u0434\u0438\u043d\u0438 \u0431\u0435\u0448\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044a\u0442 \u0437\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 WordPress \u043f\u043b\u044a\u0433\u0438\u043d\u0438 \u0438 \u0442\u0435\u043c\u0438 \u043f\u0440\u0435\u0437 Composer. \u0421\u043b\u0435\u0434 \u043f\u0440\u0438\u0434\u043e\u0431\u0438\u0432\u0430\u043d\u0435\u0442\u043e \u043c\u0443 \u043e\u0442 WP Engine \u043f\u0440\u0435\u0437 \u043c\u0430\u0440\u0442 2026 \u0433. \u0432\u0435\u0447\u0435 \u0438\u043c\u0430 \u0441\u043c\u0438\u0441\u043b\u0435\u043d\u0430, \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430 \u0438 \u043f\u043e-\u0431\u044a\u0440\u0437\u0430 \u0430\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430: WP Composer.<\/p>\n","protected":false},"author":41,"featured_media":226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[64,7,84,3,9],"class_list":["post-227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ekosistema-wordpress","tag-bedrock","tag-composer","tag-devops","tag-roots","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/posts\/227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/comments?post=227"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/posts\/227\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/media\/226"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/media?parent=227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/categories?post=227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/bg\/wp-json\/wp\/v2\/tags?post=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}