Magento 2: File minimo del compositore


9

Ho visto alcune cose fluttuare attorno a Internet impermanente (ad esempio Twitter) che alcune recenti modifiche a Magento 2 consentono di installare un modulo nella directory del fornitore tramite il compositore e Magento 2 vedrà il tuo modulo senza alcun collegamento simbolico .

Se questo è vero, esiste un composer.jsonfile "minimo " che gli sviluppatori di moduli possono utilizzare con i loro moduli per consentire agli utenti di Magento 2 di installarli nei loro sistemi?


Si consiglia di dare un'occhiata a github.com/magento/magento2/pull/1206 . Credo che abbia permesso ai moduli magento di vivere all'interno del fornitore.
Luke Rodgers,

Risposte:


6

Aggiornare

Sembra che molte cose siano cambiate con alcune ultime modifiche (7 ottobre) nel ramo di sviluppo. Ora sembra che sia possibile supportare un modulo residente nella directory del fornitore.

Ho creato due esempi di installazione di moduli. Uno che copia i file in app / codice e un altro che registra il modulo in cui risiede nella directory del fornitore.

Strategia di copia: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Strategia di registrazione: https://github.com/mttjohnson/magento2-sample-module-minimal-register

Ai fini dello sviluppo, penso che utilizzare la strategia di registrazione sia più utile perché i file che vengono eseguiti da Magento possono essere direttamente modificati, testati e ricollegati al repository del modulo.

Risposta originale

Se si dispone di un composer.jsonfile per il pacchetto del compositore del modulo che contiene un tipo di magento2-modulefile predefinito, i file verranno copiati in una directory mappata specificata nella app/codedirectory.

{
    "name": "vendorname/module-name",
    "type": "magento2-module",
    "require": {
        "magento/magento-composer-installer": "*"
    },
    "extra": {
        "map": [
            [
                "module",
                "VendorName/ModuleName"
            ]
        ]
    }
}

In questo esempio composer.json il nome del pacchetto del compositore vendorname/module-namecomporterà l'inserimento dei file per il pacchetto del compositore vendor/vendorname/module-name.

Il tipo speciale di magento2-moduleè implementato come plug -in compositore nel pacchetto magento / magento-compositore-installer . Ecco perché l'ho elencato nella sezione richiesta. È questo plug-in compositore che esegue la copia dei file nella app/codedirectory magento appropriata .

La extra: {map: [["composerDir","MagentoDir"]]}sezione fa riferimento al programma di installazione del plug-in del compositore per sapere quale parte del pacchetto del compositore associare a quale parte della struttura della directory di magento. Nell'esempio fornito questo richiederebbe vendor/vendorname/module-name/modulee copierebbe i file da lì a app/code/VendorName/ModuleName.


è la sezione della mappa qui giusto? Avevo capito che questa richiesta pull lo rendeva quindi non era necessario un plugin per usare il compositore con i moduli Magento - che Magento avrebbe cercato da solo nel fornitore. github.com/magento/magento2/pull/1206
Alan Storm

Leggendo alcuni dei commenti in fondo al PR che hai citato, sembra che il PR sia stato unito ma non supporta completamente i moduli che si trovano nella cartella del fornitore del compositore.
mttjohnson,

1

Sembra che qualcosa del genere dovrebbe fare il trucco.

{
    "name": "pulsestorm/module-name",
    "description": "A description of your extension",
    "authors": [
        {
            "name": "Robert Hoffner",
            "email": "rhoffner@example.com"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4": {
            "Package\\Module\\": "src/path/to/Package/Module/Package/Module",
        },        
        "files": [
            "src/path/to/Package/Module/registration.php",
        ]
    }    
}

La chiave qui è la sezione del caricatore automatico. Configura un caricatore automatico PSR-4 che punta ai file della tua classe e carica automaticamente il tuo registration.php. Quando compositore rilascia i file nel fornitore e ricrea i file di caricamento automatico, Magento dovrebbe essere in grado di vedere il tuo modulo.

Un chiaro effetto collaterale di questo - il codice non deve più essere inserito app/code!


Sono confuso da questo. Tutto ciò che leggo sulla creazione del mio modulo mi fa mettere i miei file in app / codice. 1) Come funziona e 2) Perché è pulito?
Kevin
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.