Magento 2: Minimum Besteci Dosyası


9

Geçici internet çevresinde yüzen birkaç şey gördüm (yani Twitter) Magento 2'deki bazı son değişiklikler, besteci aracılığıyla satıcı dizinine bir modül yüklemeyi mümkün kıldı ve Magento 2, herhangi bir symlinking tomfoolery olmadan modülünüzü görecek .

Bu doğruysa, composer.jsonmodül geliştiricilerinin modülleriyle birlikte kullanmaları için Magento 2 kullanıcılarının sistemlerine yüklemelerine izin veren "minimum " bir dosya var mı?


Github.com/magento/magento2/pull/1206 adresine göz atmak isteyebilirsiniz . Magento modüllerinin inandığım satıcıda yaşamasına izin verdi.
Luke Rodgers

Yanıtlar:


6

Güncelleme

Geliştirme dalındaki bazı son değişikliklerle (7 Ekim) birkaç şey değişti gibi görünüyor. Artık satıcı dizininde yaşayan bir modülü desteklemek mümkün görünüyor.

Modül kurmak için iki örnek oluşturdum. Biri dosyaları uygulama / koda kopyalar ve diğeri modülü satıcı dizininde bulunduğu yere kaydeder.

Kopyalama Stratejisi: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Kayıt Stratejisi: https://github.com/mttjohnson/magento2-sample-module-minimal-register

Geliştirme amacıyla, kayıt stratejisini kullanmanın daha yararlı olduğunu düşünüyorum çünkü Magento tarafından çalıştırılan dosyalar doğrudan değiştirilebilir, test edilebilir ve daha sonra modül deposuna geri gönderilebilir.

Orijinal Yanıt

composer.jsonModül besteci paketiniz için bir tür dosya içeren bir dosyanız varsa magento2-module, varsayılan olarak dosyalar dizinde belirtilen bir eşlenen dizine kopyalanır app/code.

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

Bu örnekte composer.json adlı besteci paketi adı, besteci paketinin vendorname/module-namedosyalarının yerleştirilmesine neden olur vendor/vendorname/module-name.

Özel türü magento / magento-composer-installer paketinde magento2-modulebesteci-eklentisi olarak uygulanır . Bu yüzden bunu talep bölümünde listeledim. Dosyaların uygun magento dizinine kopyalanmasını sağlayan bu besteci eklentisidir .app/code

Bu extra: {map: [["composerDir","MagentoDir"]]}bölüm, besteci paketinizin hangi bölümünün magento dizin yapınızın hangi bölümüyle eşleneceğini bilmek için besteci-eklenti yükleyicisi tarafından referans verilir. Sağlanan örnekte bu, vendor/vendorname/module-name/moduledosyaları oradan alıp kopyalayacaktır app/code/VendorName/ModuleName.


harita bölümü doğru mu? Bu çekme talebinin, Magento modülleriyle besteciyi kullanmak için bir eklentiye gerek duymadığımı - Magento'nun satıcıya tek başına bakacağını anladım. github.com/magento/magento2/pull/1206
Alan Storm

Bahsettiğiniz PR'ın altındaki bazı yorumları okurken, PR birleştirilmiş olsa da, besteci satıcı klasöründe yaşayan modülleri tam olarak desteklemiyor gibi görünüyor.
mttjohnson

1

Böyle bir şey hile yapmalı gibi görünüyor.

{
    "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",
        ]
    }    
}

Buradaki anahtar, otomatik yükleyici bölümüdür. Sınıf dosyalarınızı işaret eden ve otomatik olarak yükleyen bir PSR-4 otomatik yükleyici kurar registration.php. Besteci dosyaları satıcıya bırakıp otomatik yükleme dosyalarını yeniden oluşturduğunda, Magento modülünüzü görebilmelidir.

Bunun düzgün bir yan etkisi - kodun artık girilmesine gerek yok app/code!


Bununla kafam karıştı. Kendi modülümü oluşturmayla ilgili okuduğum her şey dosyalarımı uygulama / koda koymamı sağlıyor. 1) Bu nasıl çalışır ve 2) Bu neden düzgün?
kevando
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.