{"id":231130,"date":"2022-12-15T14:56:00","date_gmt":"2022-12-15T11:56:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231130"},"modified":"2022-12-07T11:38:01","modified_gmt":"2022-12-07T08:38:01","slug":"compositeur-sans-integration-continue","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/compositeur-sans-integration-continue\/","title":{"rendered":"Compositeur sans int\u00e9gration continue"},"content":{"rendered":"\n<p>Si vous \u00eates un d\u00e9veloppeur WordPress qui utilise Composer sans int\u00e9gration continue, il vous reste probablement une \u00e9tape cruciale pour d\u00e9terminer comment g\u00e9rer le r\u00e9pertoire des fournisseurs lors du d\u00e9ploiement de vos plugins.<\/p>\n<p>C&rsquo;est-\u00e0-dire:<\/p>\n<ul>\n<li>Nous savons que c&rsquo;est une mauvaise id\u00e9e de jeter l&rsquo;int\u00e9gralit\u00e9 du r\u00e9pertoire du fournisseur sous contr\u00f4le de source,<\/li>\n<li>Les autres d\u00e9veloppeurs familiaris\u00e9s avec l&rsquo;utilisation de <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> devraient \u00eatre en mesure de se lancer et de fonctionner sans avoir besoin de beaucoup d&rsquo;instructions,<\/li>\n<li>L&rsquo;int\u00e9gration continue n&rsquo;est pas utilis\u00e9e pour un certain nombre de raisons,<\/li>\n<li>Et il nous reste \u00e0 fournir un livrable de qualit\u00e9 production qui utilise certaines d\u00e9pendances mais pas d&rsquo;autres.<\/li>\n<\/ul>\n<p>Bien que les points ci-dessus puissent d\u00e9crire notre situation, ils ne nous disent pas ce que nous pouvons en faire.<\/p>\n<p>En d&rsquo;autres termes, voici le cas d&rsquo;utilisation\u00a0: vous avez cr\u00e9\u00e9 un plugin WordPress pour quelqu&rsquo;un. Ce plugin utilise une vari\u00e9t\u00e9 de d\u00e9pendances qui sont toutes maintenues par Composer.<\/p>\n<p>Vous n&rsquo;archivez pas le r\u00e9pertoire du fournisseur dans le r\u00e9f\u00e9rentiel, mais vous n&rsquo;utilisez pas non plus l&rsquo;int\u00e9gration continue pour d\u00e9ployer le plug-in. Au lieu de cela, le client est, ou un tiers est.<\/p>\n<p>Alors quoi alors?<\/p>\n<h2>Distribution avec Composer sans int\u00e9gration continue<\/h2>\n<p>La version courte est celle-ci :<\/p>\n<p>Exportez la branche principale (ou la branche de version ou tout ce que vous appelez) \u00e0 partir de votre copie locale du plug-in, puis assurez-vous d&rsquo;ex\u00e9cuter la commande Composer qui lui demande de cr\u00e9er le r\u00e9pertoire du fournisseur sans les d\u00e9pendances au niveau du d\u00e9veloppement.<\/p>\n<p>Ensuite, vous pouvez regrouper l&rsquo;archive g\u00e9n\u00e9r\u00e9e et la distribuer \u00e0 votre client.<\/p>\n<h3>Mais comment?<\/h3>\n<p>Tout d&rsquo;abord, je suppose que la copie locale de votre plug-in n&rsquo;a pas de copie du r\u00e9pertoire du fournisseur, mais contient tout le dernier code extrait du r\u00e9f\u00e9rentiel distant.<\/p>\n<p>Autrement dit, vous avez la derni\u00e8re version stable du code pr\u00eate \u00e0 \u00eatre publi\u00e9e, mais vous n&rsquo;\u00eates pas encore pr\u00eat \u00e0 le faire car il n&rsquo;a pas les d\u00e9pendances n\u00e9cessaires pour, par exemple, le chargement automatique et d&rsquo;autres fonctionnalit\u00e9s similaires.<\/p>\n<p>La premi\u00e8re \u00e9tape va \u00eatre d&rsquo;exporter le r\u00e9f\u00e9rentiel local dans une archive. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-00-export-local-repository-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Voici comment vous pouvez le faire<\/a> en le d\u00e9posant sur votre bureau\u00a0:<\/p>\n<pre><code>$ git archive -o ~\/Desktop\/plugin-name.zip HEAD<\/code><\/pre>\n<p>Ensuite, demandez \u00e0 Composer d&rsquo; <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f47b8077d8bb58909d34a35baac786b#file-01-install-production-dependencies-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">installer les d\u00e9pendances<\/a> qui sont en dehors de la directive <strong>require-dev<\/strong><code>composer.json<\/code> dans votre fichier\u00a0:<\/p>\n<pre><code>$ composer install --no-dev<\/code><\/pre>\n<p>Vous pouvez maintenant archiver le r\u00e9pertoire g\u00e9n\u00e9r\u00e9 dans un plugin et distribuer ce fichier.<\/p>\n<h2>Est-ce id\u00e9al ?<\/h2>\n<p>Je ne dirais pas que c&rsquo;est id\u00e9al mais c&rsquo;est une solution \u00e0 un cas d&rsquo;utilisation qui existe certainement, donc je dirais que c&rsquo;est quelque chose qui peut \u00eatre fait pour r\u00e9soudre un probl\u00e8me sp\u00e9cifique.<\/p>\n<p>En fin de compte, si vous cherchez un moyen de distribuer un plugin WordPress qui utilise Composer sans int\u00e9gration continue, c&rsquo;est une fa\u00e7on de le faire.<\/p>\n<p>Je reconnais, cependant, qu&rsquo;il s&rsquo;agit d&rsquo;un cas d&rsquo;utilisation sp\u00e9cifique et a donc une solution sp\u00e9cifique.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En fin de compte, si vous cherchez un moyen de distribuer un plugin WordPress qui utilise Composer sans int\u00e9gration continue, c&rsquo;est une fa\u00e7on de le faire.<\/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":[893,717,832,801,862],"tags":[1167],"class_list":["post-231130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-php-3","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231130"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231130\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}