Jak na vlastní composer balíček s nette komponentou?

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

Ahoj, chci některé ze svých komponent vyvíjet zvlášť a mít je jako balíčky pro composer, pro co nejjednodušší instalaci do dalších projektů.

Balíček mám přidaný na packagist.org, vše funguje tak jak má, ale chtěl bych poradit jak lokálně testovat onu komponentu?

Jak ale vyvíjet, debugovat? Momentálně využívám způsob testování provedených změn commit na github, composer update na nějakém sandboxu a tímto způsobem debugovat.
Druhý způsob mě napadá komponentu někde testovat bokem na sandboxu (nenainstalovanou přes composer, pouze nakopírovýny zdroje někam, kde ji robotlader najde) a po otestování překopírovat do repozitáře s komponentou a commit.

Celkem by mě zajímalo jak se toto řeší v praxi, protože mnou popsaná řešení jsou dost otravná.

Díky za jakékoliv rady!

Editoval Lexi (8. 7. 2015 16:50)

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

Ahoj, popíšu, jak to dělám já. Rozhodně netvrdím, že je to nejlepší způsob, ale mě vyhovuje.

Mám projekt v PHPStormu, který vyvíjím a ve které používám nějaké mé composer balíčky. U svých balíčků používám v projektu vždy @dev závislost, takže neřeším verze dokud není opravdu potřeba.

PHPStorm podporuje více VCS rootů, takže si své balíčky (vše instaluji pomocí –prefer-source – zachová to .git) nastavím jako git rooty a směle vyvíjím. Když narazím na nějakou chybu, nebo chci přidat vylepšení do mého balíčku tak není problém – upravím jej přímo v rámci projektu a hned také vidím, jestli se něco nezrozbilo. Commitování ze stormu je také hračka a push více repozitářů zároveň také funguje.

Edit: pokud přejdu na jiný projekt, kde mám použité také některé z vlastních balíčků tak je pomocí composer update aktualizuji a pracuji dál :)

Editoval Michal Vyšinský (8. 7. 2015 17:12)

David Matějka
Moderator | 6445
+
+4
-

Nekdy to delam jako @MichalVyšinský a nekdy nainstaluju komponentu composerem, smazu tu slozku ve vendoru a na misto te slozky vytvorim symlink na originalni umisteni komponenty.

Jan Mikeš
Člen | 771
+
0
-

Jeste me napadlo udelat si clone repozitare (neinstalovat pres composer) do /libs, tim padem bych mohl rovnou testovat a debugovat a nemusel vykopirovavat ven kvuli commitum, mohlo by toto fungovat v praxi?

edit: neni to prakticky stejny postup jako popisuje @MichalVyšinský ?

Editoval Lexi (8. 7. 2015 17:27)

akadlec
Člen | 1326
+
0
-

No z části, jen že to co popisuje @MichalVyšinský je o tom že ti ten balíček i nadále spravuje composer ale máš u něj i informace o GITu, takže jednoduše děláš komity. btw taky to tak dělám, protože ty balíčky se vyvíjí na nějaké konkrétní aplikaci a nebavilo by mě „odbíhat“ do nějakého sandboxu kde by se balíček ladil.

Oli
Člen | 1215
+
0
-

@MichalVyšinský mohl by jsi prosím lehce rozepsat svoje řešení? Vypadá to jako ideální stav, ale nechci si teď experimentováním rozhodit celej projekt :-)

Jestli to chápu dobře, tak kouzlo spočívá v tom, že composer závislosti stahuješ s příznakem –prefer-source? To udělá z balíčků něco jako „submoduly“?

Potom když dám push, tak tam je vidět víc repositářů a já řeknu naper to do všech a ono už si to samo pohlídá co kam má poslat?

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

@Oli přesně tak to v PhpStormu funguje. Balíčky si stáhnu pomocí –prefer-source, takže to zachová .git složku. V IDE si nastavím jednotlivé VCS rooty a potom mě nezajímá, který soubor upravuji. Navíc, jak jsou vpravo dole branche, tak každý VCS root může být na jiné, je to absolutně nezávislé.

Když vytvářím commit (přes IDE) tak se commitne do repozitáře, kam patří který soubor. Mohu mít tedy stejný commit ve více repozitářích – např. když upravím závislosti na novější verze.

V dialogu commitu lze pomocí checkboxů vybrat, které soubory chci zahrnout do commitu, takže je to celkem jednoduché.

Když pak provádím push (přes IDE) tak jsou automaticky zaškrtlé všechny repozitáře a push se provede do každého. Myslím, že by se dalo říct, že prostě spravuješ více projektů zároveň.

Edit: asi jsem zopakoval můj předchozí příspěvek v tomto vlákně. Takže jestli máš nějaké konkrétní otázky, tak se ptej, nevím co víc napsat, je potřeba si to zkusit :)

Editoval Michal Vyšinský (16. 7. 2015 9:24)

akadlec
Člen | 1326
+
0
-

Tak „naper to do všech“ je tak trochu bezhlavé ne? Jako submoduly to nebude, budeš tam mít baličky co budou vlastní repa a ty můžeš commitovat a pushovat. Však si to zkus a změn si u balíčku stable verzi na @dev a uvidíš co ti to udělá.

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

Jak jsem psal – ve svých projektech používám u svých balíčků vždy „@dev", takže mě prakticky verze nezajímá. A ovšem že přístup "naper to do všech“ vyžaduje trochu pozornosti, když si člověk zvykne a ví, co dělá tak v tom nevidím problém. A při pushování z IDE si také mohu vybrat, co chci a co nechci pushnout.

Filip Procházka
Moderator | 4668
+
0
-
David Grudl
Nette Core | 8082
+
0
-
hrach
Člen | 1834
+
+1
-
  • pokud vyvijim komponentu, tak ji vetsinou v projektu nepotrebuju, protoze pisu testy. neresim tedy potrebu to otestovat, az to dodelam, updatnu projekt.
  • pokud v projektu najdu chybu v komponente:
    • jednoducha chyba: napisu fix a pushnu komponent a zaktualizuji v projekte
    • slozita chyba: zkusim opravit chybu v projektu. pokud funguje, jdu do one komponenty, napisu failing test a pak zkusim moji opravu prekopirovat, pokud vse ok, pusnu komponentu a zaktualizuji projekt.
  • commituji zavislosti, takze vse instaluji s prefer source
  • to, ze neresim to jen „otestovani“ a nehackuju pres symlinky ma pozitivni dusledek na duslednost v testech.

Editoval hrach (19. 7. 2015 14:43)