Composer minimum-stability doplňku

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
hejdav
Člen | 50
+
0
-

Ahoj, vysvětlíte mi prosím někdo chování composeru?

Dělám jeden doplněk pro Nette, teď je jedno jakej. Mám k tomu vyrobenou DEMO stránku.

V repu DEMO stránky mám composer.json a v něm prosté:

"require": {
	"vladahejda/livetranslator": "@dev"
}

tzn. chci aby DEMO běželo na devu.

V repozitáři doplňku v dev-masteru mám tento composer.json:

"require": {
	"nette/nette": "~2"
},
"minimum-stability": "RC"

tzn. běží pod Nette 2.2, ale to je zatím jen RC.

Pokud ale na DEMO repu spustím composer update, natáhne se pouze Nette 2.1.2, tj. poslední stable. Ignoruje to min stability definovanou v doplňku.

Správně to začne fungovat teprve, když i do DEMA přidám "minimum-stability": "RC", jenže v DEMU mě nezajímá jaký dependence má doplněk, jestli RC Nette nebo nějaký jiný, přece?

Jak to tedy je? :) Díky

Editoval hejdav (1. 5. 2014 17:20)

Michal Vyšinský
Člen | 608
+
0
-

Ahoj,
zde: https://getcomposer.org/…04-schema.md#… je jasně řečeno „root-only“. A je to podle mého správně, ty chceš, aby ten konkrétní projekt měl nějakou minimální stabilitu a ne jen jeden doplněk. Doplňek by měl mít přesně specifikovanou verzi, na které má běžet.

voda
Člen | 561
+
0
-

minimum-stability má vliv pouze v hlavním composer.json souboru. Pokud tvůj doplněk závisí na Nette 2.2, uveď v require sekci "nette/nette": "~2.2".

matopeto
Člen | 395
+
0
-

„~2.2“ nebude fungovat, lebo nette neverzuje pomocou semveru. Ak by prisla 2.3 (zas plna nekompatibility, tak composer update by ju stiahol), lepsie je dat „2.2.*“ nech vies, ze ostanes na 2.2 vetve, pokial si sam nebude priat prejst na pripadnu vyssiu verziu.

Filip Procházka
Moderator | 4668
+
0
-

Composer hledá verzi Nette, která bude vyhovovat require pravidlu jak tvého doplňku tak i tvé aplikace. A protože tvůj doplněk vyžaduje 2.1 tak se ti prostě nemůže nainstalovat 2.2.

Tohle chování nejde změnit a neměl by ses ho pokoušet měnit.

Prostě musíš buď tvůj doplněk předělat pro 2.2 a změnit mu require, udělat další vývojovou větev aby jel na 2.1 i 2.2, nebo svou aplikaci napsat pro 2.1.