3

composer.json ファイルに次の設定で composer パッケージを作成しました。

"autoload": {
    "psr-4": {
        "MyVendor\\MyPackage\\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Test\\Unit\\MyProject\\MyPackage\\": "test/unit"
    }
},

composer install を実行して dev param を適用すると、次の "autoload_psr4.php" ファイルが生成されます。

<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Test\\Unit\\MyVendor\\MyPackage\\' => array($baseDir . '/test/unit'),
    'MyVendor\\MyPackage\\' => array($baseDir . '/src'),
);

基本的に、ここではすべてが正常に機能しています。次に、パッケージを Satis サーバーに追加します。

プロジェクトの composer.json ファイルに、次の行を追加します。

"require": {
    "myvendor/mypackage": "1.0.*@dev",
    "symfony/http-foundation": "2.5.*",
    "symfony/http-kernel": "2.5.*"
}

もう一度、プロジェクトで composer install を実行し、dev パラメータを適用します。パッケージは「vendor/myvendor/mypackage フォルダー」にインストールされ、「test」フォルダーがあるため、DEV バージョンがインストールされていることがわかります (安定版リリースでは test フォルダーは除外されます (アーカイブは除外されます))。

ただし、「autoload_psr4.php」ファイルには次の行がありません

'Test\\Unit\\MyVendor\\MyPackage\\' => array($baseDir . '/test/unit'),

私が使用した composer install コマンドは次のとおりです。

composer install --dev -d /var/www/myproject

基本的に、パッケージの dev 名前空間がオートローダーに追加されないのはなぜだろうと思っています。誰か説明できますか?

4

1 に答える 1

3

autoload-devどちらもrequire-devルートに対してのみ機能します(ところで、devがデフォルトです)。開発バージョンは、パッケージを開発する場合にのみ役立ちます。別のプロジェクトでパッケージが必要になるとすぐに、パッケージを開発するのではなく、別のプロジェクトを開発する必要があります。

于 2014-11-15T09:58:52.897 に答える