2013-10-08 3 views
5

Ich brauche Composer, um eine Abhängigkeit (normalize.css und andere) ohne composer.js im Projektstamm zu verwalten. Ich landete ein Paket bis zu definieren, aber ich habe ein paar Fragen:Bezieht sich die "Version" im Composer Git Repository auf das Release (Tag) auf GitHub?

{ 
    "require": { 
     "twbs/bootstrap": "~3.0", 
     "fortawesome/font-awesome": "~3.2", 
     "necolas/normalize.css": "*" 
    }, 
    "repositories": [ 
     { 
      "type":"package", 
      "package": { 
       "name": "necolas/normalize.css", 
       "version":"2", 
       "source": { 
        "url": "https://github.com/necolas/normalize.css.git", 
        "type": "git", 
        "reference":"master" 
       } 
      } 
     } 
    ] 
} 

Hat die version in meinem Paket zu einem Release beziehen (Tag) in GitHub-Repository? Wenn ja, wie kann ich angeben, d. H. ~2.1 (Ich bekomme eine ungültige Paketdefinition) oder das neueste verfügbare Tag?

Für necolas/normalize.css Ich möchte immer die neueste Version der Master-Zweigstelle erhalten.

Antwort

5

„Ist die Version in meinem Paket auf einen Release beziehen“

Nein, eine Version in einem package Eintrag definiert die Versionsnummer, den Komponist zu diesem Paket finden soll.

Das Setzen der version explizit ist für Pakete leider erforderlich, auch wenn sie von Git kommen.

"wie kann ich angeben, d. H. ~ 2.1 (ich bekomme eine ungültige Paketdefinition) oder das neueste Tag verfügbar?"

Es sieht aus wie Sie nicht können. Die Version, die in einem Paket aufgelistet wird, muss eine tatsächliche Versionsnummer statt eines Versionsnummernbereichs sein, und es gibt keine Möglichkeit, die Tags von Git abzurufen, was saugt.

Wenn Sie ein Paket-Repository durch ein zipball-Artefakt-Paket ersetzen würden, wäre es sehr einfach, eine composer.json mit den relevanten Informationen hinzuzufügen, nachdem Sie den Zipball von Github heruntergeladen haben.

Ich habe hinzugefügt, dass als ein Beweis für das Konzept zu https://github.com/Danack/IntahwebzRepo, die ein einfaches Skript zum Download Zipballs von Github ist, und fügen Sie entweder einen Versionseintrag zu ihrer composer.json, oder vollständig generieren ein composer.json, wenn sie habe noch keins.

Sobald die Zipballs heruntergeladen und modifiziert wurden, werden sie in einem Satis (aka Packagist) Repository verwendet.

+1

Das heißt, wischen die Version aus dem Paket lassen Sie mich die Version auf die übliche Weise (require + semver)? – gremo

+1

Ja, sollte es tun. – Danack

+1

Funktioniert nicht. Wenn Sie die Version aus dem Paket entfernen, wird beim Ausführen von composer ein Fehler angezeigt (ungültige Paketdefinition). – gremo

5

Hier ist meine Lösung:

Für Testzwecke ich diese composer.json Datei haben:

{ 
    "name": "mycompagny/composer-project", 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "http://localhost/git/test.composer.dep.git" 
     } 
    ], 
    "require" : { 
     "mycompagny/test.composer.dep": "dev-master#v2.0.0" 
    }, 
    "minimum-stability": "dev" 
} 

Im Schlüssel benötigen, setzen #youversion nach dev-Master zu Ihrem git Tag-zu-Punkt " Deine Version".

Das Tag nach # fungiert hier als Commit. (nach: https://getcomposer.org/doc/04-schema.md#package-links)