Magento 2 come compositore dev requisito per le estensioni


8

Quando si scrive un'estensione, avrebbe senso aggiungere magento/project-community-editionalla require-devsezione di composer.json?

L'idea alla base è che sarebbe necessario solo composer installgirare un'installazione completa di Magento per lo sviluppo o CI.

Per impostare il database, aggiungerei uno script post-installazione con bin/magento setup:install.

Per utilizzare gli strumenti di test, è necessario copiare le sezioni autoload-deve require-devda magento/project-community-editionperché sono utilizzate solo dalla radice, non dai requisiti.

Uno svantaggio che vedo è che dovresti cambiare la versione richiesta per testare su più di due versioni diverse (due perché puoi specificare un intervallo e installarlo una volta con --prefer-lowest), ma è relativamente facile aggirare.

Qualcos'altro che devo considerare?

Risposte:


4

La risposta dipende dalle esigenze del tuo elemento della configurazione.

Per i test unitari sto attualmente esaminando l'approccio per includere nella sezione richiesta solo i moduli Magento effettivi che ho come dipendenza diretta (che ottengo quasi tutti i moduli in questo modo è comunque per Magento risolvere):

"require": {
  "magento/module-backend": "~100.0.2",
  "magento/module-sales": "~100.0.2"
}

Questo funziona bene per una delle mie estensioni, vedi Travis qui, ma si sta verificando un problema interessante su un'altra estensione in cui Magento dovrebbe generare automaticamente un'interfaccia per una simulazione - dettagli qui.

Se stai guardando oltre i test unitari, penso che abbia senso avere un ambiente Magento pre-costruito in cui installi l'estensione anziché eseguire uno script di installazione per l'ambiente Magento su ogni build.


1

Sembra ragionevole. 2 punti da tenere a mente:

  1. L'installazione tramite compositore richiede parecchio tempo
  2. Quando hai un sacco di moduli, è abbastanza scomodo supportare / gestire la procedura di installazione all'interno di CI con script unici per ogni modulo. Quando devi modificare qualcosa qui, dovresti cambiare tutte le estensioni che hai.

Uno dei modi per evitarlo, potrebbe essere quello di mantenere tutto ciò che riguarda la build su CI in un repository separato e includerlo nei moduli come sottorepository.


Pubblicato per conto di Peter Samoilov da ForwardWorks poiché non è su StackExchange. :)


1

Ha senso includere solo i moduli Magento richiesti dal modulo:

  • È chiaro per tutti installarlo da cosa dipende, l'intera edizione della community è troppo ampia.
  • Probabilmente vuoi principalmente testare l'unità (e alcuni test di integrazione), quindi non ha bisogno di un negozio online funzionante.
  • I test funzionali possono essere creati nel tuo repository principale del webshop, in quanto ha più senso usare un frontend e dipendere anche dall'intero framework come cose interconnesse.

Fondamentalmente il tuo modulo stesso non dipende dall'intera edizione della community, dipende solo da una parte di essa, quindi è questo che devi specificare. In questo modo puoi ancora testarlo, ma anche chiarire quali sono le dipendenze.


0

anche non sono sicuro di questo. Il mio primo approccio sarà installare magento2 da un'immagine docker per eseguire tutti i test.

Questo ti darà un env di prova in esecuzione in un tempo piuttosto breve, ma devi creare una configurazione specifica più build rispetto all'installazione di tutto tramite compositore penso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.