Autoload lokales Paket Composer (ohne jedes Mal, wenn Sie ändern, um packagist zu gehen).
Es gibt viele Möglichkeiten, dies zu tun, werde ich zwei von ihnen werden zu verdecken:
In allen Fällen haben wir 2 Parteien:
- das lokale Paket (der Code, den wir nicht tun möchte auf packagist veröffentlichen, um es in unserem Projekt-Composer automatisch laden zu können).
- das Hauptprojekt (die Codebasis, die den lokalen Paketcode verwenden muss, kann ein anderes Paket und/oder ein beliebiges Projekt sein).
Methode 1: (direkte Namespace)
öffnen Sie das Hauptprojekt composer.json
Datei und automatische Laden den lokalen Paket Namensraumes mit einem beliebigen Methode (PSR-4, PSR-0, ...).
Beispiel:
wenn in den Komponisten.json des lokalen Paket, das wir haben:
"autoload": {
"psr-4": {
“Local\\Pack\\": "library"
}
},
"autoload-dev": {
"psr-4": {
"Local\\Pack\\Tests\\": "tests"
}
},
dann im composer.json des Hauptprojekts sollten wir haben:
"autoload": {
"psr-4": {
"Mahmoudz\\Project\\": "src",
"Local\\Pack\\": "../path/to/local/pack/library” << referencing the other local package
}
},
"autoload-dev": {
"psr-4": {
"Mahmoudz\\Project\\Tests\\": "tests"
}
},
Vorteile:
- Sie mit dem Verkäufer nicht touche Verzeichnis (versehentliches Ausführen der Composer - Aktualisierung überschreibt Ihre lokalen Änderungen nicht)
- Sie brauchen Ihr Paket nicht, um es zu verwenden.
- Sie arbeiten an einem Ort (dem lokalen Paket ge) und die Änderungen werden in das Hauptprojekt
Nachteile automatisch geladen:
- Sie nicht die composer.json über die Produktion (Bedürfnisse veröffentlichen Bearbeitung vor dem eigentlichen Paket)
Methode 2 erfordert die Veröffentlichung: (lokales Repository)
Laden Sie das lokale Paket von einem lokalen Repository herunter.
lokale Paket:
1. initialize git im Paket (auch wenn Sie wollen ihn nicht verwenden - keine Notwendigkeit, etwas zu begehen)
2. Add composer.json Datei. In der Datei sollten Sie folgende Voraussetzungen erfüllt sein:
"name": “vendor-name/package-name",
"autoload": { … // use whichever method you prefer, but make sure it’s being loaded correctly
"minimum-stability": “dev"
composer dump-autoload
Hauptprojekt:
1. bearbeiten Ihre composer.json enthalten die folgende:
"repositories": [
{
"type": "vcs",
"url": “/full/path/to/the/local/package/package-name"
}
],
"require": {
"vendor-name/package-name": "dev-master"
},
- Komponist Update hersteller Name/package-name
- jetzt Ihren Händler-Verzeichnis überprüfen sollten Sie den Lieferanten-Name/Paket- Name
HINWEIS: wenn Sie Änderung der lokalen Paket machen (nicht der Verkäufer) Sie verpflichten sich git benötigen, dann können Sie Komponist Update das Hauptprojekt, wird es die neueste Kopie des Repo in das Hauptverzeichnis des Projektanbieters bekommen.
Vorteil:
- Sie touche nicht an den Hersteller-Verzeichnis (Lauf Komponist Update versehentlich nicht Ihre lokalen Änderungen außer Kraft setzen) - Sie müssen nicht Ihr Paket auf packagist sein, es zu benutzen
Nachteil:
- Sie müssen weiterhin Ihre Änderungen (im lokalen Paket) und dann Composer-Update im Hauptprojekt
- Sie können nicht die composer.json auf Produktion veröffentlichen (muss vor der Veröffentlichung zu erfordern, um das echte Paket erforderlich Commit))
Okay, wenn ich in vcs ändere, erhalte ich folgende Meldung: [Runtime Exception] Verzeichnis existiert nicht:/d/workspaces/util – Banana
Äh, vermutlich ist das Verzeichnis dann nicht vorhanden oder nicht zugänglich? – Danack
Ich denke, das Verzeichnis ist nur falsch geschrieben. Sind Sie sicher, dass Sie es als '/ d/workspaces/util' und nicht als' d:/workspaces/util' angeben müssen? –