Composer stahuje Nette minified při konflitku dvou verzí Nette

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

Předem sory za dlouhý příspěvek a díky těm, kteří to zvládli :).

Pokud v composer.json vyžaduju Nette 2.0.*, composer install správně nainstaluje Nette 2.0.*. Pokud ale přidám svůj vlastní balíček se závislostí na Nette 2.1.* composer místo oznámení konfliktu nainstaluje Nette 2.1.* a Nette minified 2.0.*. Konkrétně:

composer.json projektu:

...
    "require": {
        "php": ">= 5.3.7",
        "nette/nette": "2.0.*",
        "tsusanka/composer-bug-package": "*"
    }
...

composer.json balíčku:

{
    "name": "tsusanka/composer-bug-package",
...
    "require": {
        "php": ">= 5.3.7",
        "nette/nette": "2.1.*"
    }
}

Jak vidíte projekt žádá verzi 2.0.* ale balíček chce 2.1.*. Pokud vím, composer by měl zařvat errorem. Místo toho ale composer install přidá nette-minifed, který se vykouzlí nevim odkud.

$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing nette/nette (2.1.x-dev e40bb99)
    Cloning e40bb993c6456b2ddc7e27005f7310feeb77c7bb

  - Installing tsusanka/composer-bug-package (dev-master accc956)
    Cloning accc956759a1f3a2d193352cec038b855a1a9bbc

  - Installing nette/nette-minified (2.0.x-dev e374d73)
    Cloning e374d73dbc8c702ce95e86114b8203ba36963a5d

nette/nette suggests installing ext-gd (*)
nette/nette-minified suggests installing ext-memcache (*)
nette/nette-minified suggests installing ext-gd (*)
Writing lock file
Generating autoload files

Za prvé je divné, že composer nekřičí, ale to je dotaz jinam. Hlavně nevím kde se vzalo nette-minified. Nette na to žádnou závislost nemá, stejně tak ne můj projekt či balíček. packagist.org nenapověděl. Verze si můžete nahradit dle vůle, chová se to stejně pro dev-master s 2.1.* atd.

Není náhodou někde v nějaké verzi špatně nastavený requirment na nette-minified? Najít se mi to však nepodařilo.


Výpis composer install -vvv (prázdná cache, vendor složka a composer.lock smazán) zde. Replikovat to můžete pomocí tsusanka/ComposerBugProject a tsusanka/ComposerBugPackage. Mělo by stačit naklonovat to první a spustit composer. I jsem vytvořil issue na composeru ale spíš si říkám, jestli není nějaké špatné nastavení ze strany nette.

Filip Procházka
Moderator | 4668
+
0
-

Je to na 100% bug v composeru, podobná nepříjemnost se před pár měsíci děla s forky, ale to fixli. Tak možná tu máme něco nového. A dost možná to taky bude feature :D (což by bylo nejhorší, protože bychom se toho neměli jak zbavit, leda smazat nette/nette-minified).

Btw pro ostatní: nette/nette-minified rozhodně nikdy nepoužívejte! Dost možná ho budeme muset dropnout :P

Jiří Nápravník
Člen | 710
+
0
-

Filip Procházka napsal(a):
Btw pro ostatní: nette/nette-minified rozhodně nikdy nepoužívejte! Dost možná ho budeme muset dropnout :P

pročpak? Já kdybych neměl problém s tím, že mi nefunguje phar s APC bych ji s radostí používal na production

Filip Procházka
Moderator | 4668
+
0
-

Nemá to žádný výkonnostní benefit a je to v konfliktu s balíčky co vyžadují nette/nette. Nehledě na to jaké odporné laděnky to pak generuje ;)

Jiří Nápravník
Člen | 710
+
0
-

Výkonostní benefit, já když to zkusil na lokale, tak jsem měl výrazně rychleji vygenerované stránky. Nevím sice moc proč, protože jsem to zas tak nezkoumal, ale tipoval bych obecně na pomalejší IO operace, kdy je rychlejší načtení jednoho velkého filu než několik menších

No a pokud někdo nemá opcode cache, tak si myslím, že tam kor musi byt znatelný rozdíl

Filip Procházka
Moderator | 4668
+
0
-

Nebo jinak, na špatně nastaveném hostingu PHP < 5.5 to bude mít výhody. Kdo pracuje na dobrém hostingu nebo má vlastní VPS s 5.5 a má tam opcode cache tak rozdíl nezpozná.

tsusanka
Člen | 23
+
0
-

Vyřešeno lidma z composeru, viz to issue https://github.com/…/issues/2991