{"id":230593,"date":"2022-12-15T14:57:00","date_gmt":"2022-12-15T11:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230593"},"modified":"2022-12-07T11:38:03","modified_gmt":"2022-12-07T08:38:03","slug":"kompozytor-bez-ciaglej-integracji","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/kompozytor-bez-ciaglej-integracji\/","title":{"rendered":"Kompozytor bez ci\u0105g\u0142ej integracji"},"content":{"rendered":"\n<p>Je\u015bli jeste\u015b programist\u0105 WordPress, kt\u00f3ry korzysta z Composera bez ci\u0105g\u0142ej integracji, istnieje du\u017ce prawdopodobie\u0144stwo, \u017ce zostaniesz z kluczowym krokiem do ustalenia, jak zarz\u0105dza\u0107 katalogiem dostawc\u00f3w podczas wdra\u017cania wtyczek.<\/p>\n<p>To znaczy:<\/p>\n<ul>\n<li>Wiemy, \u017ce poddawanie ca\u0142ego katalogu dostawc\u00f3w pod kontrol\u0119 \u017ar\u00f3d\u0142a to z\u0142y pomys\u0142,<\/li>\n<li>Inni programi\u015bci, kt\u00f3rzy s\u0105 zaznajomieni z korzystaniem z <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composera<\/a>, powinni by\u0107 w stanie uruchomi\u0107 si\u0119 i uruchomi\u0107 bez konieczno\u015bci wielu instrukcji,<\/li>\n<li>Ci\u0105g\u0142a integracja nie jest stosowana z wielu powod\u00f3w,<\/li>\n<li>Pozostaje nam konieczno\u015b\u0107 dostarczenia elementu wynikowego klasy produkcyjnej, kt\u00f3ry korzysta z pewnych zale\u017cno\u015bci, ale nie z innych.<\/li>\n<\/ul>\n<p>O ile powy\u017csze punkty mog\u0105 opisywa\u0107 nasz\u0105 sytuacj\u0119, nie m\u00f3wi\u0105 nam, co mo\u017cemy z ni\u0105 zrobi\u0107.<\/p>\n<p>Innymi s\u0142owy, oto przyk\u0142ad u\u017cycia: zbudowa\u0142e\u015b dla kogo\u015b wtyczk\u0119 WordPress. Ta wtyczka u\u017cywa r\u00f3\u017cnych zale\u017cno\u015bci, z kt\u00f3rych wszystkie s\u0105 utrzymywane przez Composer.<\/p>\n<p>Nie sprawdzasz katalogu dostawcy w repozytorium, ale tak\u017ce nie u\u017cywasz ci\u0105g\u0142ej integracji do wdra\u017cania wtyczki. Zamiast tego klient lub osoba trzecia.<\/p>\n<p>Wi\u0119c co wtedy?<\/p>\n<h2>Dystrybucja z Composerem bez ci\u0105g\u0142ej integracji<\/h2>\n<p>Kr\u00f3tka wersja jest taka:<\/p>\n<p>Wyeksportuj ga\u0142\u0105\u017a g\u0142\u00f3wn\u0105 (lub ga\u0142\u0105\u017a wydania lub jakkolwiek j\u0105 nazwiesz) z lokalnej kopii wtyczki, a nast\u0119pnie upewnij si\u0119, \u017ce uruchamiasz polecenie Composer, kt\u00f3re instruuje go, aby utworzy\u0107 katalog dostawcy bez zale\u017cno\u015bci na poziomie rozwoju.<\/p>\n<p>Nast\u0119pnie mo\u017cesz spakowa\u0107 wygenerowane archiwum i rozes\u0142a\u0107 je do klienta.<\/p>\n<h3>Ale jak?<\/h3>\n<p>Po pierwsze, zak\u0142adam, \u017ce lokalna kopia twojej wtyczki nie ma kopii katalogu dostawcy, ale ma ca\u0142y najnowszy kod pobrany ze zdalnego repozytorium.<\/p>\n<p>Oznacza to, \u017ce masz najnowsz\u0105, stabiln\u0105 wersj\u0119 kodu gotow\u0105 do wydania, ale nie jeste\u015b jeszcze na to gotowy, poniewa\u017c nie ma ona niezb\u0119dnych zale\u017cno\u015bci do, powiedzmy, automatycznego \u0142adowania i innych podobnych funkcji.<\/p>\n<p>Pierwszym krokiem b\u0119dzie wyeksportowanie lokalnego repozytorium do archiwum. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-00-export-local-repository-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Oto, jak mo\u017cesz to zrobi\u0107,<\/a> upuszczaj\u0105c go na pulpit:<\/p>\n<pre><code>$ git archive -o ~\/Desktop\/plugin-name.zip HEAD<\/code><\/pre>\n<p>Nast\u0119pnie poinstruuj Composer, aby <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-01-install-production-dependencies-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zainstalowa\u0142 zale\u017cno\u015bci<\/a>, kt\u00f3re s\u0105 poza dyrektyw\u0105 <strong>require-dev<\/strong><code>composer.json<\/code> w twoim pliku:<\/p>\n<pre><code>$ composer install --no-dev<\/code><\/pre>\n<p>Teraz mo\u017cesz zarchiwizowa\u0107 wygenerowany katalog we wtyczce i rozpowszechnia\u0107 ten plik.<\/p>\n<h2>Czy to jest idealne?<\/h2>\n<p>Nie powiedzia\u0142bym, \u017ce to jest idealne, ale jest to rozwi\u0105zanie przypadku u\u017cycia, kt\u00f3ry z pewno\u015bci\u0105 istnieje, wi\u0119c powiedzia\u0142bym, \u017ce jest to co\u015b, co mo\u017cna zrobi\u0107, aby rozwi\u0105za\u0107 konkretny problem.<\/p>\n<p>Ostatecznie, je\u015bli szukasz sposobu na dystrybucj\u0119 wtyczki WordPress korzystaj\u0105cej z Composera bez ci\u0105g\u0142ej integracji, jest to spos\u00f3b na zrobienie tego.<\/p>\n<p>Zdaj\u0119 sobie jednak spraw\u0119, \u017ce jest to konkretny przypadek u\u017cycia i dlatego ma okre\u015blone rozwi\u0105zanie.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ostatecznie, je\u015bli szukasz sposobu na dystrybucj\u0119 wtyczki WordPress korzystaj\u0105cej z Composera bez ci\u0105g\u0142ej integracji, jest to spos\u00f3b na zrobienie tego.<\/p>\n","protected":false},"author":1,"featured_media":235914,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,805,836,866],"tags":[1169],"class_list":["post-230593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-przewodnik-dla-poczatkujacych","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=230593"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230593\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}