마 젠토 2 : 최소 작곡가 파일


9

Magento 2의 최근 변경 사항으로 인해 composer를 통해 공급 업체 디렉토리에 모듈을 설치할 수 있으며 Magento 2는 symlink-ing tomfoolery없이 모듈을 볼 수 있습니다. .

이것이 사실이라면, composer.json모듈 개발자가 Magento 2 사용자가 시스템에 설치할 수 있도록 모듈과 함께 사용할 수 있는 "최소 "파일이 있습니까?


github.com/magento/magento2/pull/1206을 살펴 보십시오 . 그것은 magento 모듈이 내가 믿는 공급 업체 내에서 살 수있게 해주었다.
Luke Rodgers

답변:


6

최신 정보

개발 지점의 일부 최신 변경 사항 (10 월 7 일)으로 인해 여러 가지가 변경된 것처럼 보입니다. 이제 공급 업체 디렉토리에있는 모듈을 지원할 수있는 것처럼 보입니다.

모듈 설치의 두 가지 예를 만들었습니다. 하나는 파일을 앱 / 코드로 복사하고 다른 하나는 공급 업체 디렉토리에서 모듈이있는 위치를 등록합니다.

복사 전략 : https://github.com/mttjohnson/magento2-sample-module-minimal-copy 등록 전략 : https://github.com/mttjohnson/magento2-sample-module-minimal-register

개발 목적으로 Magento가 실행하는 파일을 직접 수정하고 테스트 한 다음 모듈 저장소에 다시 커밋 할 수 있으므로 등록 전략을 활용하는 것이 더 유용하다고 생각합니다.

원래 답변

당신이있는 경우 composer.json의 유형이 포함 된 모듈 작곡가 패키지 파일을 magento2-module기본 파일에서 다음을의 지정된 매핑 된 디렉토리에 복사 얻을 것이다 app/code디렉토리.

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

이 예제 composer.json에서 composer 패키지 이름 vendorname/module-name은 composer 패키지 의 파일을 배치 vendor/vendorname/module-name합니다.

특수 유형은 magento / magento-composer-installer 패키지 magento2-module에서 composer-plugin으로 구현됩니다 . 이것이 필자가 require 섹션에 나열한 이유입니다. 파일을 적절한 magento 디렉토리 로 복사하는 것이이 작성기 플러그인입니다 .app/code

extra: {map: [["composerDir","MagentoDir"]]}섹션은 composer-plugin 설치 프로그램에서 참조하여 magento 디렉토리 구조의 어떤 부분에 맵핑 할 작곡가 패키지의 어느 부분을 알고 있습니다. 제공된 예제 vendor/vendorname/module-name/module에서 파일을 가져 와서 복사합니다 app/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",
        ]
    }    
}

여기서 핵심은 오토로더 섹션입니다. 클래스 파일을 가리키는 PSR-4 오토로더를 설정 하고 자동으로을로드합니다 registration.php. composer가 공급 업체에서 파일을 삭제하고 자동로드 파일을 다시 생성하면 Magento가 모듈을 볼 수 있어야합니다.

이것의 좋은 부작용 하나 – 코드가 더 이상 필요하지 않습니다 app/code!


나는 이것으로 혼란스러워합니다. 내 모듈을 만드는 것에 대해 읽은 모든 것은 파일을 앱 / 코드에 넣었습니다. 1) 어떻게 작동하고 2) 왜 깔끔합니까?
kevando
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.