Hogyan érdemes js-ben buildelni
Szép napot!
Van egy olyan problémám, hogy js-ben gulppal szeretnék több build-et csinálni ugyanarról a kódról, és nem tudom hogyan álljak neki. Jelenleg van egy AMD csomagolt buildem a kódról, illetve hozzá amd csomagolt tesztek karmával és jasmine-el. Ezeket szeretném valahogy portolni commonJS-re, illetve global namespace-re.
Egyelőre két ötletem van. Az egyik, hogy továbbra is AMD-vel fejlesztek, és írok egy tasket, ami kiemeli a közös kódot az AMD csomagolt változatból, és utána újra becsomagolja pl commonJS-be. A másik, hogy kiemelem én kézzel a közös kódot, aztán ezek után úgy fejlesztek, hogy a unit tesztek csak build után futnak le. Ez utóbbinak van egy olyan hátránya, hogyha több modul van a projekten belül, akkor elég nehézkes a használata, mert valamilyen módon vezetni kell, hogy mégis milyen modulokat importálok... Mit tudtok javasolni, ti hogyan oldjátok meg?
■ Van egy olyan problémám, hogy js-ben gulppal szeretnék több build-et csinálni ugyanarról a kódról, és nem tudom hogyan álljak neki. Jelenleg van egy AMD csomagolt buildem a kódról, illetve hozzá amd csomagolt tesztek karmával és jasmine-el. Ezeket szeretném valahogy portolni commonJS-re, illetve global namespace-re.
Egyelőre két ötletem van. Az egyik, hogy továbbra is AMD-vel fejlesztek, és írok egy tasket, ami kiemeli a közös kódot az AMD csomagolt változatból, és utána újra becsomagolja pl commonJS-be. A másik, hogy kiemelem én kézzel a közös kódot, aztán ezek után úgy fejlesztek, hogy a unit tesztek csak build után futnak le. Ez utóbbinak van egy olyan hátránya, hogyha több modul van a projekten belül, akkor elég nehézkes a használata, mert valamilyen módon vezetni kell, hogy mégis milyen modulokat importálok... Mit tudtok javasolni, ti hogyan oldjátok meg?
update:Közben találtam amd
Közben találtam amd és commonJS közötti konvertereket. Azt hiszem ezek alapján kidolgozok még további konvertereket. Szóval a válasz valószínűleg az erre a problémára, hogy jobb egy meglévő csomagszerkezetet felhasználni, és utána az abban írt kódot transzformálni a többi csomagszerkezetre. Bizonyos dolgok csak kézzel végezhetőek el ezzel kapcsolatban, pl a teszt rendszer beállítása a további csomagokra, stb... Mindenképp jobb egy tesztelhető kiindulási alap, mint kitalálni valami teljesen idegen dolgot, és a build után tesztelni.
amd2standardjs
commonjs2amd
Tovább kutakodtam a témában.
Ezek elég érdekes eszközök, elcsodálkoztam, hogy egyáltalán létezik ilyen jellegű js parser és builder, mert elég bonyolult dologról van szó.
A másik, amin elcsodálkoztam, hogy az estraverse mennyire furcsa. Valószínűleg az AST formátum anomáliái miatt jöhetett egyáltalán létre egy ilyen rendszer. Sajnos nincs egységes node formátum, és ezért nehézkes végigiterálni a teljes fán, emiatt volt muszáj betenni még egy réteget az AST, és az azt transzformáló kód közé. Ez körülbelül olyan, mintha az XML tervezési hibája miatt muszáj lenne a DOM parser fölé tenni még egy SAX parsert is ahhoz, hogy végig tudjunk iterálni a fán, vagy egyáltalán selectorokat tudjunk alkalmazni. Elég furcsa, és nem tartom elfogadható koncepciónak, hogy a szabvány javítása helyett inkább gányoltak...