2016-05-11 4 views
2

どのようにあなたの依存ライブラリを管理していますか?これらのライブラリは他のいくつかのプロジェクトでも使用されているので、私はプロジェクトを複数のライブラリに分けています。最初は、それぞれをGitリポジトリとして作成し、それらを管理するためにGitサブモジュールを使用します。すぐに、それは悪夢になる。私はいくつかの変更を加えたら、私はサブモジュールにコミットする必要があり、これは面倒であり、多大な作業を必要としています。依存関係ライブラリをどのように管理しますか?

私はSyliusのことをどうやったのか疑問に思って、彼らはGitのとPackagistレポとして各バンドルを維持するが、彼らは自分自身のバンドルを管理するためのGitやComposerを使用しないでください。

+0

あなたの図書館は公開されていますか? –

+4

だから、コンポーザーを使用してください(質問にタグを付けました) – zerkms

+0

この質問の重複しているようです[大きなリポジトリと1つの大きなリポジトリ?](http://programmers.stackexchange.com/questions/161293/choosingプロジェクト間の単一または複数のプロジェクト間で)質問にタグが付けられていても問題は同じです。 – Christiaan

答えて

1

最良の方法は、あなたの依存関係とのautoloadにすべてのあなたのクラスを管理するために作曲を使用することです。

それを達成するための最初のステップは、作曲のための準備ができて、すべてのコンポーネントを準備することですので、あなたの依存関係の各1は、ルートに自分のcomposer.jsonを持っています。基本的な構成は、次のようになります。

{ 
    "name": "your/component-name", 
    "description": "your description", 
    "license": "proprietary", 
    "authors": [ 
    { 
     "name": "Your name", 
     "email": "[email protected]" 
    } 
    ], 
    "autoload": { 
    "psr-4": { 
     "Your\\Complete\\Namespace": "src/" 
    } 
    }, 
    ... etc ... 
} 
  • nameフィールドは、それがベースを決定しますので、あなたが
  • autoloadセクションは非常に重要であるあなたのメインプロジェクトに依存関係をロードするために使用する名前ですすべてのクラスのネームスペース。メインプロジェクトで依存関係をインポートするときは、この名前空間を介してコンポーネントクラスにアクセスします。

依存関係が準備されると、メインプロジェクトを作成してコンポーザを介してロードする準備が整います。だから、基本的には、このプロジェクトのcomposer.json構造は、あなたの依存関係をロードするために、より多くのオプションと、前と全く同じになります

{ 
    "name": "your/project-name", 
    "description": "your description", 
    "license": "proprietary", 
    "authors": [ 
    { 
     "name": "Your name", 
     "email": "[email protected]" 
    } 
    ], 
    "autoload": { 
    "psr-4": { 
     "Your\\Project\\Namespace": "src/" 
    } 
    }, 
    "require": { 
    "your/dependency1-name" : "dev-master", 
    "your/dependency2-name" : "dev-master", 
    .... 
    }, 
    "repositories": [ 
    { 
     "type": "git", 
     "url": "https://github.com/the-git-url-of-your-project1" 
    }, 
    { 
     "type": "git", 
     "url": "https://github.com/the-git-url-of-your-project2" 
    } 
    ] 
    ... etc ... 
} 
  • require部分の各ラインは、あなたがすべての依存関係にあなたを設定することができます(あなたには、いくつかを持っている場合dev-masterまたはタグの数)のどのバージョンで(依存composer.jsonのそのname一部)をロードします。
  • repositoriesパート:依存関係がpackagist(https://packagist.org/)にある場合を除き、依存関係のリポジトリ(github、bitbucketなど)を追加する必要があります。それはあなたのレポのクローンセクションで見つけることができる同じURLです。

これは、コンポーザーとの依存関係を管理するために従わなければならない手順です。 Obsviously、あなたは本当にあなたが作曲で何ができるか、そのちょうど基本的な概要を引き起こし、あなたのニーズに適合するようにドキュメントをチェックする必要があります。

composer installは、vendorディレクトリとその名前空間で使用できるすべてのクラスに依存関係を読み込む必要があります。

あなたはより多くのオプションのドキュメントを見ることができます:

https://getcomposer.org/doc/

そして、これはシート私は(私はコメントを追加することはできません)コメントに見

http://composer.json.jolicode.com/

+0

独自のライブラリがたくさんある場合は、プライベートな作曲家リポジトリを見る価値があるかもしれません。このようなリポジトリには、[satis](https://github.com/composer/satis)と[Toran Proxy](https://toranproxy.com/)という2つのリポジトリがあります。 – Christiaan

+0

@olibiaz、ありがとう、作曲家は問題を解決することができない、私たちはまだ変更をすべてコミットする必要があります、私は最も単純な方法は、gitを使用しないようにする必要がありますか、または独自のライブラリを管理する作曲家、ツールは、ライブラリからcomposer.jsonを抽出し、gitまたはcomposerリポジトリとして作成します。 –

+0

@ olibiaz、@ Christiaan、私はSyliusとDrupalがこれをどのようにして行ったのか疑問に思っています。すべての図書館はgit repoですが、彼らは個々のリポジトリではなくプロジェクト全体としての変更を行います。 –

0

チート便利メインアプリケーションで行われたすべての変更をすべてのバンドルにコミットする必要があります。

あなたは作曲の無APIオプションを見ることができます:あなたが作曲を行う際にGitのクローンを行います

"repositories": [ 
    { 
     "type": "git", 
     "no-api": true, 
     "url": "https://github.com/the-git-url-of-your-project1" 
    } 
    ] 

作曲は作曲を使用せずに

別の解決策をインストールするには、gitのを使用することですサブモジュール

関連する問題