Symfony2:バンドル内にcomposer.jsonファイルを含めることは可能ですか?
-
20-12-2019 - |
質問
私のプロジェクトは複数のバンドルで構成されており、そのうちのいくつかは必要であり、いくつかは特定のサーバーで使用します。次に、不要なバンドルの依存関係を追加する必要があります。バンドルを使用しない場合はそのコードを使用しない可能性があるため、メインの composor.json にプロジェクトの依存関係として追加するのは無駄だと思います。
そのバンドル内にcomposer.jsonファイルを含めることは可能ですか?それが不可能な場合、どのように対処すればよいでしょうか?
例
src/
Project/
RequiredFirstBundle/
RequiredSecondBundle/
Non-RequiredBundle/
composor.json
私は試した:
//Path: src/Project/Non-RequiredBundle/composer.json
{
"name": "project/non-requiredbundle",
"description": "desc",
"type": "symfony-bundle",
"license": "MIT",
"authors": [
{
"name": "name",
"email": "email"
}
],
"require": {
"symfony/framework-bundle": "~2.2",
"another/dependency": "*"
},
"autoload": {
"psr-0": { "Project\\Non-RequiredBundle": "" }
},
"target-dir": "Project/Non-RequiredBundle"
}
しかし、実行時にファイルが使用されていることがわかりません composer.phar update
ありがとう
解決
私の理解が正しければ、すべてを含む 1 つのソフトウェア バージョンを用意してどこにでも展開するか、異なる依存関係を持つ複数のバージョンをそのソフトウェアの個々のサーバーに展開することを考えていることになります。
ハードドライブに数バイトを節約することが理由ではないと思います。
しかし、composer はこれを助けることができません。実際、Composer にオートローダーに依存関係を含めさせるには、使用する依存関係をその Composer.json のどこかに含める必要があります。
私は「1 つのバージョンですべてに対応」を選択し、必要な依存関係をすべて含めるだけです。未使用のソフトウェア部分の展開について心配する必要はありません。ユーザーが使用すると思われる部品であっても、常にそうすることになります。
他のヒント
バンドルの一部を共有したい場合は、サードパーティのバンドルなどのベンダーバンドルとして開発する必要があります。したがって、バンドルごとにバージョン管理リポジトリを作成し、バンドルごとにcomposer.jsonを追加する必要があります。symfony のコンポーザーファイルでバンドルを使用できるようにするには、VersionControl URL をリソースとして追加する必要があります。次のようになります。
"repositories": [
{
"type": "vcs"
"url": "https://github.com/igorw/monolog"
}
],
コーディングを楽しんでください:)