Scegli quale file installare tramite Composer in base alla versione di Magento


11

Sarebbe molto conveniente includere più versioni di codice in un modulo composer e fare in modo che compositore capisca quale versione distribuire, in base alla versione Magento della destinazione dell'installazione.

Ad esempio, per Magento> 1.7, utilizzare system.xml che include funzionalità tooltipnidificate groupe altre funzionalità moderne, ma per le versioni precedenti di Magento, utilizzare una versione ridotta del file che non includa tali dichiarazioni (non valide).

Questo approccio potrebbe funzionare anche per numerosi altri file in una struttura di modulo standard.

Le opzioni per la distribuzione del compositore sono map, modmano package.xmlAFAIK, nessuna delle quali ha alcuna intelligenza riguardo al sistema di destinazione. L' package.xmlopzione è molto improbabile che cambi, ma mappotrebbe ...

Mi sembra che ci sarebbero molti sviluppatori di estensioni che trarrebbero beneficio dall'approccio aggraziato al degrado. Qualcuno ha trovato una soluzione per questo?

Risposte:


8

Non ho una soluzione alternativa e non è stato ancora un problema per me, ma ho una proposta che potrebbe funzionare:

  1. È necessario mantenere rami di versione separati per scegliere come target diverse versioni di Magento. Distribuire file diversi nella stessa versione a seconda della magia del compositore non funzionerà bene. Quindi la tua estensione potrebbe avere un 1.xramo per la compatibilità con le versioni precedenti di Magento (ad esempio fino alla 1.6) e un 2.xramo per versioni più moderne. Aggiungi i tag di versione di conseguenza. Ovviamente puoi mantenere tutti i rami che vuoi e scrivere il codice migliore per ogni versione di Magento, ma IMHO non vale la pena e dovrebbe bastare un ramo "moderno" e uno "legacy". Dipende da te, fino a che punto vuoi essere retrocompatibile con il ramo "moderno", può anche essere solo l'ultima versione minore.
  2. Aggiungi un requisito per Magento in questo modo:

    "require": {
        "magento/magento-ce": "1.4-1.7"
    }
    

    e

    "require": {
        "magento/magento-ce": ">=1.8"
    }
    
  3. Ora arriva il rovescio della medaglia, la parte in cui non hai più piena influenza: non esiste un magento/magento-cepacchetto ufficiale , quindi gli utenti della tua estensione installeranno probabilmente Magento da un mirror gestito dalla community come https://github.com/firegento/magento -ce o dal proprio repository. Questi devono sostituire il magento/magento-cepacchetto "virtuale" della stessa versione (esiste un segnaposto self.version , quindi non è necessario modificare composer.json per ogni aggiornamento di versione):

    "replace": {
        "magento/magento-ce": "self.version"
    }
    

Funzionerà bene solo se la convenzione di cui sopra sarà ampiamente accettata e solo per gli utenti che installano effettivamente Magento stesso tramite la dipendenza del compositore, che probabilmente non è la maggioranza.

Quindi un approccio più realistico è quello di seguire il passaggio 1 e consigliare agli utenti di richiedere un ramo diverso / una versione principale diversa, se eseguono una versione Magento precedente alla 1.x.

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.