Magento 2: ไฟล์นักแต่งเพลงขั้นต่ำ


9

ฉันได้เห็นบางสิ่งที่ลอยอยู่รอบ ๆ อินเทอร์เน็ตที่ไม่แน่นอน (เช่น Twitter) ที่การเปลี่ยนแปลงล่าสุดของ Magento 2 ทำให้สามารถติดตั้งโมดูลลงในไดเรกทอรีผู้จัดจำหน่ายผ่านผู้เรียบเรียงและ Magento 2 จะเห็นโมดูลของคุณโดยไม่ต้องใช้อุปกรณ์เชื่อมต่อใด ๆ .

ถ้าเป็นจริงมีcomposer.jsonไฟล์ " ขั้นต่ำ" ลอยอยู่หรือเปล่าเพื่อให้ผู้พัฒนาโมดูลสามารถใช้กับโมดูลของพวกเขาเพื่อให้ผู้ใช้ Magento 2 ติดตั้งลงในระบบได้หรือไม่?


คุณอาจต้องการที่จะมีลักษณะที่github.com/magento/magento2/pull/1206 อนุญาตให้โมดูลวีโอไอพีอยู่ภายในผู้ขายที่ฉันเชื่อ
ลุคร็อดเจอร์ส

คำตอบ:


6

ปรับปรุง

ดูเหมือนว่ามีการเปลี่ยนแปลงหลายอย่างด้วยการเปลี่ยนแปลงล่าสุด (7 ตุลาคม) ในสาขาที่กำลังพัฒนา ดูเหมือนว่าเป็นไปได้ที่จะสนับสนุนโมดูลที่มีชีวิตอยู่ในไดเรกทอรีผู้ขาย

ฉันสร้างตัวอย่างการติดตั้งโมดูลสองตัวอย่าง หนึ่งที่คัดลอกไฟล์ไปยังแอพ / รหัสและอื่น ๆ ที่ลงทะเบียนโมดูลที่มันอยู่ในไดเรกทอรีผู้ขาย

คัดลอกกลยุทธ์: https://github.com/mttjohnson/magento2-sample-module-minimal-copy กลยุทธ์การลงทะเบียน: https://github.com/mttjohnson/magento2-sample-module-minimal-register

เพื่อจุดประสงค์ในการพัฒนาฉันคิดว่าการใช้กลยุทธ์การลงทะเบียนมีประโยชน์มากกว่าเพราะไฟล์ที่เรียกใช้โดย Magento สามารถแก้ไขโดยตรงทดสอบแล้วส่งกลับไปยัง repo โมดูลได้

คำตอบเดิม

หากคุณมีcomposer.jsonไฟล์สำหรับแพคเกจนักแต่งเพลงโมดูลของคุณที่มีรูปแบบของmagento2-moduleแล้วโดยไฟล์ที่เริ่มต้นจะได้รับการคัดลอกไปยังไดเรกทอรีแมปที่ระบุไว้ในapp/codeไดเรกทอรี

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

ในตัวอย่างนี้ผู้แต่งชื่อแพคเกจผู้แต่งvendorname/module-nameจะส่งผลให้ไฟล์สำหรับแพคเกจผู้แต่งได้รับการวางvendor/vendorname/module-nameระบบ

ชนิดพิเศษmagento2-moduleถูกนำไปใช้เป็นปลั๊กอินสำหรับนักแต่งเพลงในแพ็คเกจmagento / magento-composer-installer นั่นคือเหตุผลที่ฉันได้ระบุไว้ในส่วนที่ต้องใช้ มันเป็นปลั๊กอินสำหรับนักแต่งเพลงที่ทำการคัดลอกไฟล์ไปไว้ในapp/codeสารบบวีโอไอพีที่เหมาะสม

extra: {map: [["composerDir","MagentoDir"]]}ส่วนถูกอ้างอิงโดยนักแต่งเพลงติดตั้งปลั๊กอินที่จะรู้ว่าสิ่งที่เป็นส่วนหนึ่งของแพคเกจนักแต่งเพลงของคุณเพื่อ map กับสิ่งที่เป็นส่วนหนึ่งของโครงสร้างไดเรกทอรีวีโอไอพีของคุณ ในตัวอย่างที่มีให้นี้จะใช้เวลาและคัดลอกไฟล์จากที่นั่นไปvendor/vendorname/module-name/moduleapp/code/VendorName/ModuleName


ส่วนของแผนที่อยู่ที่นี่ใช่ไหม มันเป็นความเข้าใจของฉันว่าคำขอดึงนี้ทำให้คุณไม่ต้องใช้ปลั๊กอินเพื่อใช้นักแต่งเพลงกับโมดูล Magento - Magento จะมองผู้ขายด้วยตัวเอง github.com/magento/magento2/pull/1206
Alan Storm

การอ่านความคิดเห็นบางส่วนที่ด้านล่างของ PR ที่คุณกล่าวถึงดูเหมือนว่า PR นั้นถูกรวมเข้าด้วยกัน แต่ก็ไม่สนับสนุนโมดูลที่มีอยู่ในโฟลเดอร์ผู้แต่งเพลงอย่างสมบูรณ์
mttjohnson

1

ดูเหมือนว่าสิ่งนี้ควรทำเคล็ดลับ

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

ที่สำคัญนี่คือส่วน autoloader มันตั้งค่าขึ้น PSR-4 โหลดที่จุดคลาสไฟล์ของคุณและregistration.phpโหลดโดยอัตโนมัติของคุณ เมื่อผู้แต่งวางไฟล์ในผู้จำหน่ายและสร้างไฟล์ autoload ใหม่ขึ้นมาวีโอไอพีควรจะเห็นโมดูลของคุณ

ผลข้างเคียงอย่างหนึ่งของรหัสนี้ไม่จำเป็นต้องอยู่ในอีกต่อไปapp/code!


ฉันสับสนกับสิ่งนี้ ทุกสิ่งที่ฉันอ่านเกี่ยวกับการสร้างโมดูลของฉันทำให้ฉันใส่ไฟล์ลงในแอพ / รหัส 1) วิธีนี้ใช้งานได้และ 2) เหตุใดจึงเป็นระเบียบ
kevando
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.