{"id":230636,"date":"2022-12-15T14:19:00","date_gmt":"2022-12-15T11:19:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230636"},"modified":"2022-12-07T11:38:05","modified_gmt":"2022-12-07T08:38:05","slug":"kompositoer-utan-kontinuerlig-integration","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/kompositoer-utan-kontinuerlig-integration\/","title":{"rendered":"Komposit\u00f6r utan kontinuerlig integration"},"content":{"rendered":"\n<p>Om du \u00e4r en WordPress-utvecklare som anv\u00e4nder Composer utan kontinuerlig integration, \u00e4r det troligt att du st\u00e5r kvar med ett avg\u00f6rande steg f\u00f6r att ta reda p\u00e5 hur du hanterar leverant\u00f6rskatalogen n\u00e4r du distribuerar dina plugins.<\/p>\n<p>Det \u00e4r:<\/p>\n<ul>\n<li>Vi vet att det \u00e4r en d\u00e5lig id\u00e9 att kasta hela leverant\u00f6rskatalogen under k\u00e4llkontroll,<\/li>\n<li>Andra utvecklare som \u00e4r bekanta med att anv\u00e4nda <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> b\u00f6r kunna komma ig\u00e5ng utan att beh\u00f6va mycket instruktioner,<\/li>\n<li>Kontinuerlig integration anv\u00e4nds inte av ett antal sk\u00e4l,<\/li>\n<li>Och vi har kvar att beh\u00f6va tillhandah\u00e5lla en produkt i produktionskvalitet som anv\u00e4nder vissa beroenden men inte andra.<\/li>\n<\/ul>\n<p>S\u00e5 mycket som ovanst\u00e5ende punkter kan beskriva v\u00e5r situation, s\u00e4ger det oss inte vad vi kan g\u00f6ra med det.<\/p>\n<p>Med andra ord, h\u00e4r \u00e4r anv\u00e4ndningsfallet: Du har byggt ett WordPress-plugin f\u00f6r n\u00e5gon. Denna plugin anv\u00e4nder en m\u00e4ngd olika beroenden som alla underh\u00e5lls av Composer.<\/p>\n<p>Du kontrollerar inte leverant\u00f6rskatalogen i f\u00f6rvaret, men du anv\u00e4nder inte heller kontinuerlig integration f\u00f6r att distribuera plugin-programmet. Ist\u00e4llet \u00e4r kunden, eller en tredje part.<\/p>\n<p>S\u00e5 vad d\u00e5?<\/p>\n<h2>Distribution med komposit\u00f6r utan kontinuerlig integration<\/h2>\n<p>Den korta versionen \u00e4r denna:<\/p>\n<p>Exportera huvudgrenen (eller sl\u00e4ppgrenen eller vad du nu kallar den) fr\u00e5n din lokala kopia av plugin-programmet, se till att du k\u00f6r kommandot Composer som instruerar den att skapa leverant\u00f6rskatalogen utan beroenden p\u00e5 utvecklingsniv\u00e5.<\/p>\n<p>Sedan kan du bunta ihop det genererade arkivet och distribuera det till din kund.<\/p>\n<h3>Men hur?<\/h3>\n<p>F\u00f6r det f\u00f6rsta antar jag att den lokala kopian av ditt plugin inte har en kopia av leverant\u00f6rskatalogen utan har all den senaste koden h\u00e4mtad fr\u00e5n fj\u00e4rrf\u00f6rvaret.<\/p>\n<p>Det vill s\u00e4ga, du har den senaste, stabila versionen av koden redo att sl\u00e4ppas men du \u00e4r \u00e4nnu inte redo att g\u00f6ra det eftersom den inte har de n\u00f6dv\u00e4ndiga beroenden f\u00f6r till exempel autoloading och annan liknande funktionalitet.<\/p>\n<p>Det f\u00f6rsta steget kommer att vara att exportera det lokala f\u00f6rvaret till ett arkiv. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-00-export-local-repository-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">S\u00e5 h\u00e4r kan du g\u00f6ra det<\/a> genom att sl\u00e4ppa det p\u00e5 skrivbordet:<\/p>\n<pre><code>$ git archive -o ~\/Desktop\/plugin-name.zip HEAD<\/code><\/pre>\n<p>Instruera sedan Composer att <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-01-install-production-dependencies-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">installera de beroenden<\/a> som ligger utanf\u00f6r direktivet <strong>require-dev<\/strong> i din <code>composer.json<\/code>fil:<\/p>\n<pre><code>$ composer install --no-dev<\/code><\/pre>\n<p>Nu kan du arkivera den genererade katalogen i ett plugin och distribuera den filen.<\/p>\n<h2>\u00c4r detta idealiskt?<\/h2>\n<p>Jag skulle inte s\u00e4ga att detta \u00e4r idealiskt men det \u00e4r en l\u00f6sning p\u00e5 ett anv\u00e4ndningsfall som verkligen finns, s\u00e5 jag skulle s\u00e4ga att det \u00e4r n\u00e5got som kan g\u00f6ras f\u00f6r att l\u00f6sa ett specifikt problem.<\/p>\n<p>I slut\u00e4ndan, om du letar efter ett s\u00e4tt att distribuera ett WordPress-plugin som anv\u00e4nder Composer utan kontinuerlig integration, \u00e4r detta ett s\u00e4tt att g\u00f6ra det.<\/p>\n<p>Jag inser dock att det \u00e4r ett specifikt anv\u00e4ndningsfall och har d\u00e4rf\u00f6r en specifik l\u00f6sning.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I slut\u00e4ndan, om du letar efter ett s\u00e4tt att distribuera ett WordPress-plugin som anv\u00e4nder Composer utan kontinuerlig integration, \u00e4r detta ett s\u00e4tt att g\u00f6ra det.<\/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":[838,901,807,724,868],"tags":[1173],"class_list":["post-230636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=230636"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230636\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}