2012-08-01 15 views
16

Wir haben unser eigenes Satis-Repository, wir können dort unsere eigenen Abhängigkeiten speichern. Das funktioniert gut.Kann ich Abhängigkeiten von packagist.org mit meiner eigenen Composer-Satis-Installation synchronisieren oder spiegeln?

Wenn ein Entwickler jedoch ein Paket verwendet, das sich nicht in unserem eigenen Repository befindet, holt Composer es von GitHub über packagist.org (als Fallback).

Aber wir wollen nicht von packagist.org abhängig sein. Alle Abhängigkeiten sollten von unserem eigenen Repository heruntergeladen werden.

Was wir gerne wissen, wenn es möglich ist, dass Satis ein Paket von Packagist herunterladen, wenn es noch nicht lokal verfügbar ist, und speichern Sie es und fügen Sie es automatisch zu Satis eigenem Repository hinzu.

Auf diese Weise müssen wir die Abhängigkeiten nicht manuell zum Satis-Repository hinzufügen.

+0

Packagist speichert nur Paketmetadaten. Der eigentliche Quellcode stammt aus einem Repository (normalerweise gitHub). Ich denke, Sie können den Composer-Quellcode durchsuchen, um herauszufinden, wie sie Pakete auflisten und die Metadaten herunterladen. – Tivie

Antwort

15

Satis unterstützt dies jetzt.

Folgen Sie einfach der Satis setup instructions und fügen Sie Folgendes zu Ihrer Konfigurationsdatei hinzu (die standardmäßig satis.json heißt). Aktualisieren Sie die Präfix-URL und fordern Sie sie entsprechend an.

{ 
    "repositories": [ 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require-dependencies": true, 
    "require": { 
     {{your application dependencies from composer.json}} 
    }, 
    "archive": { 
     "directory": "dist", 
     "prefix-url": "{{your server}}", 
     "skip-dev": true 
    } 
} 

Dann können Sie Ihre Satis Repository wie normale erstellen:

php bin/satis build <configuration file> <build dir> 

nun Ihr Satis Repository werden alle Ihre Anwendung Abhängigkeiten erfüllen.


Hinweis: Der erste Lauf kann eine Weile dauern. Nachfolgende Läufe sind viel schneller. Beachten Sie auch, dass Satis/tmp für seinen Cache verwendet. Auf einem kleinen Speichersystem, auf dem/tmp von tmpfs unterstützt wird, müssen Sie möglicherweise den Speicherplatz/tmp erhöhen, wenn eine große Abhängigkeitsstruktur vorhanden ist.

Sie könnten auch in der Datei composer.json Ihres Projekts disable the Packagist repository möchten, um sicherzustellen, dass alle Abhängigkeiten aus Ihrem Satis-Repository stammen. Fügen Sie dazu:

{ 
    "repositories": [ 
     { 
      "packagist": false 
     } 
    ] 
} 

zu Ihrem Projekt composer.json hinzu.

+0

Danke für Ihren Kommentar! Würde diese Konfiguration Ihre Instanz von Satis weiterhin von Packagist abhängig machen, wenn alle Abhängigkeiten archiviert werden (z. B. 'php bin/satis build')? Wenn also Packagist.org beim Ausführen von 'php bin/satis build 'nicht verfügbar war, würde es nicht wissen, wo jede Abhängigkeit lebt. Zugegeben, das bedeutet, dass Sie manuell eine Liste aller kanonischen Repository-URLs in 'Repositories' pflegen müssen, aber das ist der Preis, den Sie dafür bezahlen, unabhängig zu sein. Oder fehlt mir etwas? –

+0

Sie haben Recht, aber es ist kein großer Deal, denn wenn Packagist nicht verfügbar ist, haben Sie immer noch alle Abhängigkeiten, die Sie während des letzten Satis-Laufs gezogen haben.In der Praxis denke ich, dass Sie externe Probleme (wie zum Beispiel Packagist nicht verfügbar) bemerken (und beheben), wenn Sie Ihre Abhängigkeiten aktiv ändern und Ihren vollständig zufriedenen Abhängigkeitsspiegel während der normalen Entwicklung und Produktion verwenden. – rynemccall

+0

Das Problem hier ist, dass Sie noch manuell alle Abhängigkeiten hinzufügen müssen. Wenn Sie ein Git Repo haben, können Sie das einfach hinzufügen, aber die Abhängigkeiten, die das Projekt in diesem Repo benötigt, werden nicht automatisch geladen, es ist ein großer manueller Aufwand. – Lars

6

Sie können broker verwenden, um dies für jetzt zu erreichen. Höchstwahrscheinlich wird diese Fähigkeit hinzugefügt, um sich selbst zufrieden zu stellen.

+0

danke, das sieht genau was ich brauche. – Niborb

+2

"Hinweis: Dieses Projekt wird nicht mehr aktiv gepflegt. Da [satis] (https://github.com/composer/satis) jetzt eine ähnliche Funktionalität unterstützt, sollten Sie [satis] (https://github.com/ Komponist/satis) statt. " – MPV