Wor­king Draft

SCREENGUIDE - - Inneres - TExT: Ste­fan Baum­gart­ner

Kolumne: Ze­ro Con­fi­gu­ra­ti­on Ja­vaS­cript

Seit ei­ni­gen Wo­chen rauscht auf Twit­ter oft der Hash­tag #0CJS vor­bei, kurz für „Ze­ro Con­fi­gu­ra­ti­on Ja­vaS­cript”. Da­hin­ter ver­birgt sich ei­ne Be­we­gung, die end­lich mit schier end­lo­sen Kon­fi­gu­ra­ti­ons­da­tei­en und Stell­schrau­ben Schluss ma­chen will. An­ge­trie­ben wird das Gan­ze – nicht ganz iro­nie­frei – vom Web­pack Team, das bis­her für ki­lo­me­ter­lan­ge Ja­vaS­cript-Ob­jek­te zur Kon­fi­gu­ra­ti­on be­kannt ist.

Rund um das Jahr 2013 star­te­te der Task Run­ner Gr­unt.js ei­nen bis heute an­hal­ten­den Too­ling-Boom und be­ein­fluss­te maß­geb­lich den Sie­ges­zug von No­de.js un­ter Front­end-Ent­wick­lern. Plötz­lich war es ein Leich­tes, mit ei­ner be­kann­ten Tech­no­lo­gie (Ja­vaS­cript) vie­le Din­ge zu au­to­ma­ti­sie­ren, die noch vor Jah­ren müh­se­lig über PHP oder Ja­va er­le­digt wer­den muss­ten. Gr­unt war im ers­ten Re­lease vor al­lem auf jQu­e­ry-Plu­gin­ent­wick­ler aus­ge­rich­tet und folg­te vie­len Kon­ven­tio­nen, die für die­se Ziel­grup­pe sin­voll wa­ren. Der Wunsch nach Fle­xi­bi­li­tät sorg­te für ein gro­ßes Re­fac­to­ring: Ei­ne Plu­gin-Ar­chi­tek­tur öff­ne­te APIs und er­mög­lich­te Ent­wick­lern, ih­re ei­ge­nen Be­dürf­nis­se zu in­te­grie­ren. Das Re­sul­tat? Ei­ne rie­si­ge Men­ge an Plug­ins, die oft das Glei­che tun (spa­ßes­hal­ber soll­ten Sie mal nach „gr­unt” und „con­cat” auf NPM su­chen), mit ei­nem eben­so un­end­lich wir­ken­den Se­t­up in Kon­fi­gu­ra­ti­ons­da­tei­en. Als Bei­spiel: Das ge­sam­te Build Se­t­up von „Init” [git­hub.com/use-init/init] – ei­nem da­mals sehr po­pu­lä­ren Ein­stei­ger­pa­ket für Front­end-Pro­jek­te mei­ner ge­schätz­ten Wor­king-Draft-Kol­le­gen – bie­tet stol­ze 70 kB an Gr­unt.js-Aus­gangs­kon­fi­gu­ra­ti­on. Die meis­ten Ein­stel­lun­gen be­tref­fen Qu­ell- und Ziel­ver­zeich­nis der zu be­ar­bei­ten­den Da­tei­en.

KON­VEN­TI­ON ÜBER KON­FI­GU­RA­TI­ON

Der Ruf nach ei­nem et­was we­ni­ger um­ständ­li­che­ren Build­sys­tem wur­de laut. Ei­nes, das ein we­nig mit­dach­te und nicht stän­dig Ein­und Aus­ga­be­ort de­fi­nie­ren ließ. Ei­nes, mit dem man auch meh­re­re Schrit­te in ei­nem er­le­di­gen konn­te. Gulp.js bot Ent­wick­lern genau das (Sie se­hen es – Über­ra­schung! – eben­falls un­ter den po­pu­lä­ren Pa­ke­ten in Ab­bil­dung 1). An­statt um­ständ­lich zu kon­fi­gu­rie­ren, be­ka­men Ent­wick­ler ein gu­tes Set an Stan­dard­wer­ten, schrie­ben Code und freu­ten sich, al­les ein we­nig schnel­ler und mit we­ni­ger Auf­wand er­le­digt zu ha­ben. Doch auch die neue und kom­pak­te­re Schreib­wei­se en­de­te ir­gend­wann in vie­len Da­tei­en und zu lan­gen Skrip­ten. Wie­der woll­te man die An­zahl an Stell­schrau­ben re­du­zie­ren und sag­te ei­nen neu­en Trend an: An­statt über Build Tools und Wrap­per Plug­ins di­ver­se Tools auf­zu­ru­fen, soll man doch mit ein we­nig Shell Scrip­t­ing die Werk­zeu­ge di­rekt auf­ru­fen. Die Da­tei pa­cka­ge.json von NPM hilft da­bei mit der Aus­füh­rung di­ver­ser Skrip­te. Re­du­zier­te die Kom­ple­xi­tät. An­fangs. Am En­de war es Gulp gar nicht so un­ähn­lich.

WEB­PACK UND CLI-WERK­ZEU­GE

Web­pack selbst mach­te ei­ne ähn­li­che Ent­wick­lung durch. Der an­fangs sim­ple Mo­dul-Bund­ler im Stil von Brow­se­ri­fy hat­te den net­ten Ne­ben­ef­fekt, dass Sie nicht nur Ja­vaS­cript-Da­tei­en bün­deln konn­ten. Ein ein­zig­ar­ti­ges Fea­tu­re mit Po­ten­zi­al, das sah auch die Ja­vaS­cript Com­mu­ni­ty so. Um die­ses Fea­tu­re al­ler­dings voll aus­zu­schöp­fen, be­nö­tigt es vor al­lem ei­nes. Rich­tig: Plug­ins und Kon­fi­gu­ra­tio­nen. Die Ge­schich­te wie­der­holt sich.

Abb. 2: Be­reits die In­fo­gra­fik auf der Start­sei­te zeigt, was Web­pack an­ders macht als an­de­re Bund­ler: Sie kön­nen Web­pack mit je­dem Da­tei­typ füt­tern.

Abb. 1: Un­ter den po­pu­lä­ren NPM-Pa­ke­ten a sich im­mer noch Gr­unt und Gulp. Die letz­ten Re­lea­ses die­ser Tools sind al­ler­dings schon ei­ne Wei­le her.

Newspapers in German

Newspapers from Germany

© PressReader. All rights reserved.