2012-08-22 9 views
6

Ich bin gerade zu Symfony 2.1 gewechselt, und ich kann nicht verstehen, wie ich meine eigenen Bundles mit Composer installieren kann?Wie installiere ich dein eigenes Bundle mit Composer in Symfony 2.1?

Es war sehr einfach in 2.0.x in deps:

[MyOwnBundle] 
    [email protected]:weboshin_cms_bundle.git 
    target=/bundles/My/OwnBundle 

Danach habe ich nur ausgelöst bin/vendors update und das war es!

Aber jetzt gibt es keine deps Datei, und ich sollte alles mit Composer tun. Bitte gib mir irgendwelche Hinweise.

+0

** mit Symfony 2.1 Sie auch die alte Abhängigkeit Manager verwenden können! ** Sie haben eine 'composer.json'-Datei erstellen Komponist zu sagen, was Ihre Abhängigkeiten sind. Sie sollten sich [Symfony Standard Edition] (https://github.com/symfony/symfony-standard/blob/master/composer.json) ansehen. Dann erstellen Sie ein weiteres 'composer.json' für Ihr Bundle. – Florent

+0

@Florent, bitte beachten Sie, dass es bereits ein Tag für das Composer-Tool 'composer-php' gibt. – Charles

Antwort

6

Ich habe die Antwort gefunden.

// my_project/compose.json: 
{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "own_repository_url" 
     } 
    ], 

    // ... 

    "require": { 
     // ... 
     "own/bundle": "dev-master" 
    } 
}, 

// own_repository/own_bundle/compose.json: 
{ 
    "name": "own/bundle" 
} 
5

Fügen Sie Ihrem Bundle eine composer.json-Datei hinzu. Zum Beispiel habe ich dies für einen meines Bündel:

{ 
    "name":  "cg/kint-bundle", 
    "type":  "symfony-bundle", 
    "description": "This bundle lets you use the Kint function in your Twig templates. Kint is a print_r() replacement which produces a structured, collapsible and escaped output", 
    "keywords": ["kint", "debug", "symfony", "bundle", "twig"], 
    "homepage": "http://github.com/barelon/CgKintBundle", 
    "license":  "MIT", 

    "authors": [ 
     { 
      "name": "Carlos Granados", 
      "homepage": "http://github.com/barelon" 
     }, 
     { 
      "name": "Symfony Community", 
      "homepage": "http://github.com/barelon/CgKintBundle" 
     } 
    ], 

    "require": { 
     "php":      ">=5.3.2", 
     "symfony/framework-bundle": ">=2.0.0", 
     "raveren/kint":    "dev-master" 
    }, 

    "minimum-stability": "dev", 

    "autoload": { 
     "psr-0": { 
      "Cg\\KintBundle": "" 
     } 
    }, 

    "target-dir": "Cg/KintBundle" 
} 

Dann wird Ihr Bündel packagist.org hinzuzufügen. Es ist sehr einfach, im Grunde müssen Sie nur Ihre Git Adresse angeben und es wird den Rest erledigen.

Sobald Ihr Bundle in packagist verfügbar ist, fügen Sie es einfach als Abhängigkeit in die Datei composer.json für Ihr symfony-Projekt ein. In meinem Fall habe ich:

"require": { 
    .... 
    "cg/kint-bundle": "*" 
}, 

Dann führen Sie einfach "Composer-Update" in Ihrem Symfony-Verzeichnis und das ist alles! Sie müssen die Autoload-Datei nicht einmal aktualisieren, Composer erledigt das für Sie. Die einzige Sache würde sein, das Bündel in appkernel.php zu laden

+3

Beachten Sie, dass "Hinzufügen zu Packagist" nur für Open Source-Bundles gilt, für Closed-Source-Bundles, siehe https://getcomposer.org/doc/05-repositories.md#vcs und https://getcomposer.org/doc /articles/handling-private-packages-with-satis.md – Seldaek

+6

Weiß jemand, was das 'symfony-bundle' impliziert? Welche Konsequenzen hat die Verwendung dieses Typs? – greg0ire