Mam bibliotekę, foo/foo-lib
której requires
konkretny commit z GitHub:
{
"name": "foo/foo-lib",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/Gaufrette.git"
}
],
"require": {
"knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e"
}
}
i działa dobrze:
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Updating knplabs/gaufrette dev-master (2633721 => 2633721)
Checking out 2633721877cae79ad461f3ca06f3f77fb4fce02e
Generating autoload files
ale kiedy potrzebuję tej biblioteki w innym projekcie:
{
"name": "bar/bar-app",
"repositories": [
{
"type": "vcs",
"url": "ssh://git.example.com/foo-lib"
}
],
"require-dev": {
"foo/foo-lib": "dev-master"
}
}
daje błąd zależności:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for foo/foo-lib dev-master -> satisfiable by foo/foo-lib[dev-master].
- foo/foo-lib dev-master requires knplabs/gaufrette dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e -> no matching package found.
Więc moje pytanie brzmi: jak poprawnie wykonać require
konkretny commit z GitHub w mojej bibliotece, aby był dostępny w pakietach zależnych?
php
github
composer-php
Maciej Sz
źródło
źródło
Odpowiedzi:
Będziesz musiał jawnie wymagać biblioteki Gaufrette w tym skrócie, z
dev
flagą, zarówno w swojej bibliotece, jak iw aplikacji. Coś takiego powinno działać w aplikacjicomposer.json
:Z dokumentacji :
Dokumentacja sugeruje również, że będziesz musiał dołączyć repozytorium dla Gaufrette do
bar/bar-app
pliku Composer, chociaż brzmi to tak, jakby nie było to konieczne w tym przypadku. Nie wiem dlaczego.źródło
"minimum-stability": "dev"
dobar/bar-app
wymagań?dev
stabilnością i domyślniestable
dla wszystkiego innego."url": "https://github.com/KnpLabs/Gaufrette.git"
z pierwszego pakietu i nadal działa.Oto jak to zrobić w linii poleceń:
Nie musisz używać całego hasha, siedem znaków wydaje się być sztuczką. Jak wspomniano powyżej, Twój projekt będzie musiał wspierać programistów - na co będzie narzekać, jeśli nie jest jeszcze ustawiony. Użyj również,
--with-dependencies
aby uzyskać wszelkie zależności aktualizowanego.źródło
Jeśli wprowadzasz zmiany w repozytorium Git przez rozwidlenie, upewnij się, że używasz nazwy pakietu jest faktycznie zdefiniowana we własnym pliku composer.json pakietu - więc nawet jeśli rozwidliłem pakiet na moje własne konto joshuapaling github i pakiet znajdował się teraz pod adresem URL https://github.com/joshuapaling/Cake-Resque.git , co w ogóle nie wpłynęło na nazwę pakietu z perspektywy kompozytorów.
Głupi błąd - ale jestem nowym kompozytorem i na początku nie było to jasne! Mam więc nadzieję, że pomoże to komuś innemu z tym samym problemem.
źródło