{"id":231421,"date":"2022-12-15T14:50:00","date_gmt":"2022-12-15T11:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231421"},"modified":"2022-12-07T11:38:02","modified_gmt":"2022-12-07T08:38:02","slug":"compositore-senza-integrazione-continua","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/compositore-senza-integrazione-continua\/","title":{"rendered":"Compositore senza integrazione continua"},"content":{"rendered":"\n<p>Se sei uno sviluppatore WordPress che utilizza Composer senza un&#8217;integrazione continua, \u00e8 probabile che ti rimanga un passaggio cruciale per capire come gestire la directory del fornitore durante la distribuzione dei plug-in.<\/p>\n<p>Questo \u00e8:<\/p>\n<ul>\n<li>Sappiamo che \u00e8 una cattiva idea mettere l&#8217;intera directory del fornitore sotto il controllo del codice sorgente,<\/li>\n<li>Altri sviluppatori che hanno familiarit\u00e0 con l&#8217;utilizzo di <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> dovrebbero essere in grado di iniziare a funzionare senza la necessit\u00e0 di molte istruzioni,<\/li>\n<li>L&#8217;integrazione continua non viene utilizzata per una serie di motivi,<\/li>\n<li>E ci resta la necessit\u00e0 di fornire un deliverable di livello produttivo che utilizzi determinate dipendenze ma non altre.<\/li>\n<\/ul>\n<p>Per quanto i punti precedenti possano descrivere la nostra situazione, non ci dice cosa possiamo farci.<\/p>\n<p>In altre parole, ecco il caso d&#8217;uso: hai creato un plugin per WordPress per qualcuno. Questo plugin utilizza una variet\u00e0 di dipendenze che sono tutte gestite da Composer.<\/p>\n<p>Non stai controllando la directory del fornitore nel repository, ma non stai nemmeno utilizzando l&#8217;integrazione continua per distribuire il plug-in. Invece, il cliente lo \u00e8 o \u00e8 una terza parte.<\/p>\n<p>E allora?<\/p>\n<h2>Distribuzione con compositore senza integrazione continua<\/h2>\n<p>La versione corta \u00e8 questa:<\/p>\n<p>Esporta il ramo principale (o ramo di rilascio o come lo chiami) dalla tua copia locale del plug-in, quindi assicurati di eseguire il comando Composer che indica di creare la directory del fornitore senza le dipendenze a livello di sviluppo.<\/p>\n<p>Quindi puoi raggruppare l&#8217;archivio generato e distribuirlo al tuo cliente.<\/p>\n<h3>Ma come?<\/h3>\n<p>Innanzitutto, suppongo che la copia locale del plug-in non abbia una copia della directory del fornitore ma abbia tutto il codice pi\u00f9 recente estratto dal repository remoto.<\/p>\n<p>Cio\u00e8, hai l&#8217;ultima versione stabile del codice pronta per essere rilasciata ma non sei ancora pronto per farlo perch\u00e9 non ha le dipendenze necessarie, ad esempio, per il caricamento automatico e altre funzionalit\u00e0 simili.<\/p>\n<p>Il primo passaggio consiste nell&#8217;esportare il repository locale in un archivio. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-00-export-local-repository-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ecco come puoi farlo<\/a> rilasciandolo sul desktop:<\/p>\n<pre><code>$ git archive -o ~\/Desktop\/plugin-name.zip HEAD<\/code><\/pre>\n<p>Quindi, chiedi a Composer di <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-01-install-production-dependencies-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">installare le dipendenze<\/a> che sono al di fuori della direttiva <strong>require-dev<\/strong><code>composer.json<\/code> nel tuo file:<\/p>\n<pre><code>$ composer install --no-dev<\/code><\/pre>\n<p>Ora puoi archiviare la directory generata in un plug-in e distribuire quel file.<\/p>\n<h2>Questo \u00e8 l&#8217;ideale?<\/h2>\n<p>Non direi che questo \u00e8 l&#8217;ideale, ma \u00e8 una soluzione a un caso d&#8217;uso che sicuramente esiste, quindi direi che \u00e8 qualcosa che pu\u00f2 essere fatto per risolvere un problema specifico.<\/p>\n<p>In definitiva, se stai cercando un modo per distribuire un plug-in WordPress che utilizza Composer senza un&#8217;integrazione continua, questo \u00e8 un modo per farlo.<\/p>\n<p>Riconosco, tuttavia, che si tratta di un caso d&#8217;uso specifico e quindi ha una soluzione specifica.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In definitiva, se stai cercando un modo per distribuire un plug-in WordPress che utilizza Composer senza un&#8217;integrazione continua, questo \u00e8 un modo per farlo.<\/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":[896,835,804,720,865],"tags":[1168],"class_list":["post-231421","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-php-6","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231421"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231421\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}