[Composer] Wiele projektów - jeden vendor, Jak to skonfigurować poprawnie? |
[Composer] Wiele projektów - jeden vendor, Jak to skonfigurować poprawnie? |
5.12.2018, 15:31:46
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 865 Pomógł: 228 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Nie wiem jak użyć jeden katalog vendor dla wielu projektów do których potrzebuję te same wersje pakietów. Jednak jedyne wyjście - najpewniejsze to inicjacja composera w katalogu projektu, ale gdy jest dużo większych bibliotek to nie ma sensu duplikowania bibliotek.
Przedstawię układ katalogów dla mojego projektu: Kod - \projekt ---- \vendor ---- \dev -------- \libs -------- composer.json ---- \public -------- \libs -------- composer.json W katalogu ./dev i ./public zainicjowałem composer.json z następującymi danymi: Kod { "require": { "phpmailer/phpmailer": "^6.0", "mpdf/mpdf": "^7.1" }, "autoload": { "psr-4": { "":"libs" } }, "config": { "bin-dir":"libs", "vendor-dir": "../vendor" } } Niby działa, ale zawsze tylko dla jednego, czyli dla tego który ostatni otrzymał wywołanie: composer dump-autoload Kod dla autoload_psr4.php mam taki:
Zmienia się jedynie wartość zmiennej $baseDir czyli albo /dev albo /public. Czy jest jakaś recepta aby móc korzystać z wewnętrznych klas projektu osobno, a vendora wspólnie? Ten post edytował Tomplus 5.12.2018, 16:29:10 |
|
|
5.12.2018, 16:05:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Po co robisz sobie problemy? Na prawdę aż tak biedujesz transfer i sotrage?
Jak już tak chcesz to zrób Kod -| composer.json ./vendor \__ dev \_ public Czyli composer wraz z json i lock katalog niżej i dołącz autoloader w każdym. Dodatkowo jak chcesz miec autoloading w projektach to dodatkowo tam załóż composer jako autoload plików samego projektu. |
|
|
5.12.2018, 16:35:09
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 865 Pomógł: 228 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Może nie bieduje, ale chodzi mi o pewną wygodę, i pewność że stabilne biblioteki są takie same w obydwu wersjach projektu.
W poście głównym zrobiłem korektę schematu katalogu, dopisałem tam gdzie obecnie mam pliki composer.json/lock Ale wg Twojego zamysłu, na moich schemacie, ma być tak: Kod - \projekt ---- composer.json ---- \vendor ---- \dev -------- \libs ---- \public -------- \libs |
|
|
5.12.2018, 18:09:15
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 375 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Przecież composer właśnie do tego służy żebyś miał wersję konkretnie jaką chcesz.
-------------------- |
|
|
5.12.2018, 18:13:15
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 865 Pomógł: 228 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Nie przeczę, dlatego chce wersję bibliotek taką samą do dwóch wersji tego samego projektu.
|
|
|
5.12.2018, 19:41:31
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Raczej coś takiego:
Kod o |-- vendor |-- composer.json |-- dev | |-- vendor | `-- composer.json `-- prod |-- vendor `-- composer.json W takim układzie w `dev` załączasz 2x autoload (1-szy z root dir gdzie masz main libs, a 2-gi ze swojego katalogu) Nie powiem Ci czy to zadziała na 100% ale powinno |
|
|
6.12.2018, 15:16:48
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 865 Pomógł: 228 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Nie udało mi się poprawnie skonfigurować. Więc po prostu zrobiłem to inaczej.
Zainstalowałem bibliotekę: https://packagist.org/packages/nette/robot-loader i wdrożyłem ją do projektu. Teraz wszystko działa tak jak powinno. |
|
|
8.12.2018, 14:06:21
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) |
skoro chcesz dokładnie to samo to nie możesz zwykłego symlinka zrobić?
|
|
|
Wersja Lo-Fi | Aktualny czas: 31.10.2024 - 23:48 |