2016-07-01 20 views
1

ich ein Projekt mit der folgenden Struktur muß packagist:Tests Ordner ignorieren, wenn Sende

- src 
----/ /* Relevant files */ 
- tests 
----/ /* Irrelevant files */ 
- composer.json 
- phpunit.xml 

Das Projekt packagist gesendet wird auf jeden bereits begehen. Aber es sendet die Testdateien.

Ich möchte tests Ordner ignorieren, so wird nicht Komponist unecessary Dateien herunterladen, wenn jemand composer require my/package

Hier nennt, ist was ist der Inhalt meiner composer.json wie folgt aussieht:

{ 
    "name": "my/package", 
    "description": "...", 
    "type": "library", 
    "license": "MIT", 
    "require": { 
     "php": ">=7" 
    }, 
    "require-dev": { 
     "phpunit/phpunit": ">=5.4" 
    }, 
    "autoload": { 
     "psr-4": { 
      "MyProject\\": "./src" 
     } 
    } 
} 
+0

Was, wenn dieser jemand sicherstellen möchte, dass Ihr Code nicht kaputt ist? –

+0

@ MarcoAurélioDeleu Dann könnte er vielleicht die "dev version with testings" herunterladen? – CarlosCarucce

+0

@ MarcoAurélioDeleu Ich mache es nicht, wenn es Sinn macht oder nicht ... Es ist das erste Mal, dass ich Komponententests für ein Open-Source-Projekt durchführe – CarlosCarucce

Antwort

1

Ignorieren Testordner beim Senden an den Packagisten

Lassen Sie uns zuerst etwas Verwirrung aufklären.

Wenn Sie Packagist für Ihr Repository aktivieren, lädt Packagist die Datei composer.json, um Metadaten zu Ihrem Projekt abzurufen und die Versionsinformationen aus den Tags/Zweigen abzurufen.

Sie senden Ihren PHP-Code oder Tests jedoch nicht an Packagist.


Ich möchte Tests Ordner ignorieren, so Komponisten gewohnt unecessary Dateien herunterladen, wenn jemand Komponist mein/Paket nennt erfordern

Diese Frage sehr oft erscheint. Ich bin Referenzierung eine ausführliche Antwort, die ich vor einiger Zeit geschrieben habe, die vielen Hintergrund erklärt: https://stackoverflow.com/a/32476500/1163786

Verwendung einer .gitattributes Datei mit export-ignore Richtlinie

  • Technisch gesehen könnten Sie Fügen Sie Ihrem Repository eine .gitattributes Datei hinzu, die eine export-ignore Regel für den Testordner deklariert.
  • Dies bedeutet, dass alle git export nicht mehr den Testordner einschließlich der Github-Zip-Datei haben.

Ok, getan exclude ..

Aber, wenn jemand composer require ist dein Projekt, ist es nun an der abhängen --prefer-dist Einstellung das Paket aus dem dist (zip) zu installieren . (Sie würden die Tests mit --prefer-source erhalten).


  • Wenn es eine kleine Bibliothek ist, sich Sorgen zu machen stoppen. Sei glücklich .. :)

  • Wenn es eine größere Anwendung ist, dann ist eine bessere Lösung, Ihre Anwendung richtig zu packen, anstatt auf die git exported Zip-Verteilung zu verlassen. Die meisten Entwickler verwenden kein build.xml oder irgendein Build-Skript mehr, aber das ist meiner Meinung nach der richtige Weg.

    Das bedeutet, sobald Sie bereit sind, eine neue Version zu markieren. Sie lösen Ihr Build-Skript aus, das alle Abhängigkeiten abruft, die Tests erneut ausführt, und wenn alles in Ordnung ist, löschen Sie alle Tests und packen Sie die Dateien für die Bereitstellung.


Kleiner Tipp: Vergessen Sie nicht einen autoload-dev Abschnitt für Ihre Tests zu composer.json hinzuzufügen.