{"id":229067,"date":"2022-11-11T10:16:00","date_gmt":"2022-11-11T07:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229067"},"modified":"2022-11-09T05:24:15","modified_gmt":"2022-11-09T02:24:15","slug":"kompositoer-foer-wordpress-del-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/kompositoer-foer-wordpress-del-1\/","title":{"rendered":"Komposit\u00f6r f\u00f6r WordPress, del 1"},"content":{"rendered":"\n<p>Okej, s\u00e5 efter att ha pratat igenom alla olika bibliotek som kan hj\u00e4lpa till att f\u00f6rb\u00e4ttra kodkvaliteten p\u00e5 ditt arbete, v\u00e4cker det fortfarande en fr\u00e5ga:<\/p>\n<p>Hur f\u00e5r vi dessa projekt att fungera mot v\u00e5r kodbas?<\/p>\n<p>Kort sagt, det kr\u00e4ver <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Om du aldrig har anv\u00e4nt det s\u00e5 har jag <a href=\"https:\/\/tommcfarlin.com\/setting-php-and-composer-in-mamp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">skrivit kort om det<\/a> tidigare, men jag t\u00e4nker ge grunderna om vad du beh\u00f6ver f\u00f6r att komma ig\u00e5ng med att anv\u00e4nda den och de tidigare n\u00e4mnda biblioteken i ditt arbete.<\/p>\n<p>I b\u00e5de det h\u00e4r inl\u00e4gget och n\u00e4sta kommer jag att dela hur du st\u00e4ller in allt lokalt i den mest grundl\u00e4ggande formen och sedan hur det integreras med Git s\u00e5 att du kan b\u00f6rja anv\u00e4nda det i din vardag.<\/p>\n<h2>Konfigurera Composer f\u00f6r WordPress<\/h2>\n<p>Det finns mycket information som kan (och jag skulle h\u00e4vda att man borde g\u00e5 in i en fil f\u00f6r Composer). Detta inkluderar saker som f\u00f6rfattarens information, PSR, information, etc. Men det \u00e4r verkligen utanf\u00f6r ramen f\u00f6r detta inl\u00e4gg. Ist\u00e4llet vill jag dela med mig av det absoluta minimum som kr\u00e4vs f\u00f6r hur man st\u00e4ller in och konfigurerar denna information.<\/p>\n<h3>En provkatalog<\/h3>\n<p>Antag att du f\u00f6r ett \u00f6gonblick ska b\u00f6rja arbeta med ett plugin eller n\u00e5got relaterat till WordPress som kommer att kr\u00e4va de olika biblioteken som diskuterades i f\u00f6reg\u00e5ende serie. Och n\u00e4r du st\u00e4ller in katalogen f\u00f6r detta kommer du att ha v\u00e4ldigt f\u00e5 filer. F\u00e5r ett par tomma PHP-filer, tillg\u00e5ngar, etc. Det kanske kommer att se ut s\u00e5 h\u00e4r:<\/p>\n<p>Visst, exemplet ovan ligger redan lite f\u00f6re hur ditt arbete kan se ut eftersom:<\/p>\n<ul>\n<li>Det finns en <code>composer.lock<\/code>\u00a0fil som visar att Composer har k\u00f6rts,<\/li>\n<li>Den har en <code>vendor<\/code>\u00a0katalog som visar att bibliotek har installerats via Composer,<\/li>\n<li>Det finns en <code>grumphp.yml<\/code>\u00a0fil som definierar hur GrumPHP ska fungera (och jag kommer att ta upp detta senare) n\u00e4r man sniffar kod.<\/li>\n<\/ul>\n<p>Men k\u00e4rnan i ovanst\u00e5ende \u00e4r densamma: Du har <code>composer.json<\/code>och det definierar och inkluderar allt vi beh\u00f6ver baserat p\u00e5 f\u00f6reg\u00e5ende inl\u00e4gg. S\u00e5 hur st\u00e4ller vi upp det?<\/p>\n<h3>Konfigurera komposit\u00f6r<\/h3>\n<p>F\u00f6rst m\u00e5ste du ha en id\u00e9 om hur du kommer att strukturera ditt plugin. Till exempel har jag en plugin-inst\u00e4llning s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li>Alla PHP-filer finns i <code>src<\/code>\u00a0katalogen,<\/li>\n<li>Alla CSS, JavaScript, bilder, etc., filer finns i <code>assets<\/code>\u00a0katalogen,<\/li>\n<li>Katalogen <code>vendor<\/code>\u00a0\u00e4r f\u00f6r saker som installeras via Composer,<\/li>\n<li><code>views<\/code>\u00a0\u00e4r vad som anv\u00e4nds i projektets front-end.<\/li>\n<\/ul>\n<p>Till exempel:<\/p>\n<\/p>\n<p>F\u00f6r det andra, i katalogen i fr\u00e5ga, vill du skapa en fil som heter <code>composer.json<\/code>. Detta kan g\u00f6ras via Terminal genom att bara utf\u00e4rda ett <code>touch<\/code>\u00a0kommando, eller s\u00e5 kan du skapa det i din IDE.<\/p>\n<p>Det viktiga att ta bort fr\u00e5n detta \u00e4r att det finns en <code>src<\/code>\u00a0katalog eftersom det \u00e4r katalogen som inneh\u00e5ller v\u00e5ra PHP-filer och det \u00e4r den katalogen vi vill ha sniffat.<\/p>\n<h3>En grundl\u00e4ggande komposit\u00f6rsfil<\/h3>\n<p>Med det sagt, h\u00e4r \u00e4r en grundl\u00e4ggande <code>composer.json<\/code>fil som du kan anv\u00e4nda i dina projekt baserat p\u00e5 den tidigare serien och baserat p\u00e5 vad som <a href=\"https:\/\/gist.github.com\/tommcfarlin\/60ac0e1fba9fa152fc57622e3866d6dc\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">delas<\/a> nedan:<\/p>\n<pre><code>{\n  \"name\": \"pressware\/demo-wordpress-plugin\",\n  \"description\": \"This file is used to show how to configure a WordPress plugin using Composer.\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Pressware\": \"src\/\"\n    }\n  },\n  \"require-dev\": {\n    \"phpro\/grumphp\": \"^0.11.6\",\n    \"phpmd\/phpmd\": \"^2.6\",\n    \"phpunit\/phpunit\": \"5.7.21\",\n    \"nikic\/php-parser\": \"^3.0\",\n    \"sebastian\/phpcpd\": \"^3.0\",\n    \"povils\/phpmnd\": \"^1.1\",\n    \"squizlabs\/php_codesniffer\": \"^3.0\",\n    \"jakub-onderka\/php-parallel-lint\": \"^0.9.2\",\n    \"sensiolabs\/security-checker\": \"^4.0\"\n  }\n}<\/code><\/pre>\n<p>Titta p\u00e5 filen ovan, s\u00e5 h\u00e4r analyserar du den:<\/p>\n<ol>\n<li>Rad 2 och 3 ger lite av en beskrivning av vad pluginet handlar om. Det \u00e4r ocks\u00e5 andra omr\u00e5den i den h\u00e4r filen f\u00f6r att ge mer information om vad som beh\u00f6ver g\u00f6ras.<\/li>\n<li>Raderna 4 till 8 \u00e4r viktiga eftersom de f\u00f6rklarar att vi anv\u00e4nder <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> f\u00f6r automatisk laddning och att alla filer faller under namnutrymmet p\u00e5 toppniv\u00e5n <code>Pressware<\/code>och att PHP-filerna finns i <code>src<\/code>\u00a0katalogen.<\/li>\n<li>Raderna 9 \u2013 18 t\u00e4cker alla filer som t\u00e4cktes i f\u00f6reg\u00e5ende serie.<\/li>\n<\/ol>\n<p>Utf\u00f6r sedan f\u00f6ljande kommando i din terminal:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>Och det kommer att installera dessa paket.<\/p>\n<h2>Hur \u00e4r det med Commits?<\/h2>\n<p>F\u00f6r att vara s\u00e4ker p\u00e5 att du snusar ordentligt och hanterar commits \u00e4r det viktigt att du konfigurerar GrumPHP s\u00e5 att det tittar p\u00e5 filerna. Men jag ska ta en titt p\u00e5 det i n\u00e4sta inl\u00e4gg.<\/p>\n<p>Under tiden kanske detta \u00e4r ett bra tillf\u00e4lle att st\u00e4lla in ett demo-plugin och \u00f6va med ovanst\u00e5ende kod. Det kan vara sv\u00e5rt att st\u00e4lla in det precis r\u00e4tt f\u00f6rsta g\u00e5ngen. Lyckligtvis \u00e4r m\u00e5nga av utdatafelen v\u00e4ldigt l\u00e4tta att f\u00f6rst\u00e5, s\u00e5 det \u00e4r relativt enkelt att l\u00f6sa dem.<\/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>Detta \u00e4r den f\u00f6rsta i en serie i tv\u00e5 delar om hur du konfigurerar Composer f\u00f6r WordPress-utveckling s\u00e5 att du kan skriva kod av h\u00f6gre kvalitet i ditt arbete).<\/p>\n","protected":false},"author":1,"featured_media":166003,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[1022,755,724],"tags":[1173],"class_list":["post-229067","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-anvandbara-webbplatser","category-oeppen-kaella","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229067","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=229067"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229067\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/166003"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}