Magento 2:最小のComposerファイル


9

Magento 2への最近の変更によりcomposerを介してベンダーディレクトリにモジュールをインストールすることが可能になり、Magento 2はシンボリックリンクするtomfooleryなしでモジュールを見ることができるという、恒久的なインターネット(つまりTwitter)の周りに浮かんでいるものをいくつか見ました。

これに該当する場合composer.json、モジュール開発者がモジュールで使用してMagento 2ユーザーがシステムにインストールできるようにするための「最小」ファイルが浮かんでいますか?


あなたは見ていたいかもしれgithub.com/magento/magento2/pull/1206を。これにより、magentoモジュールをベンダー内で使用できるようになりました。
ルークロジャース

回答:


6

更新

開発ブランチの最新の変更(10月7日)でいくつかの変更が行われたようです。これで、ベンダーディレクトリにあるモジュールをサポートできるようになりました。

モジュールのインストール例を2つ作成しました。1つはファイルをapp / codeにコピーし、もう1つはベンダーディレクトリにあるモジュールを登録します。

コピー戦略: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ます。

の特別なタイプはmagento2-modulemagento / magento-composer-installerパッケージのcomposer-pluginとして実装されます。それが私がrequireセクションにリストした理由です。ファイルを適切なmagento app/codeディレクトリにコピーするのは、このcomposer-pluginです。

このextra: {map: [["composerDir","MagentoDir"]]}セクションは、composer-pluginインストーラーによって参照され、コンポーザーパッケージのどの部分がmagentoディレクトリ構造のどの部分にマップされるかを認識します。提供された例では、これはvendor/vendorname/module-name/moduleそこからファイルを取得してコピーしますapp/code/VendorName/ModuleName


ここの地図セクションは正しいですか?このプルリクエストがMagentoモジュールでcomposerを使用するためのプラグインを必要としないことを理解しました-Magentoはベンダーを独自に調べます。github.com/magento/magento2/pull/1206
アランストーム

あなたが言及したPRの下部にあるコメントの一部を読むと、PRはマージされたように見えますが、それはcomposerベンダーフォルダーにあるモジュールを完全にはサポートしていません。
mttjohnson 2015

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はモジュールを表示できるはずです。

これの1つのきちんとした副作用-コードはもう必要ありませんapp/code


私はこれで混乱しています。独自のモジュールの作成について読んだことのすべてが、ファイルをapp / codeに置くことです。1)これはどのように機能し、2)なぜこれはきちんとしているのですか?
kevando 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.