package Ġorg . jetbrains . kotlin . gradle . frontend . webpack Ċ Ċ import Ġgro ovy . json . Json Sl ur per Ċ import Ġorg . gradle . api .* Ċ import Ġorg . gradle . api . tasks .* Ċ import Ġorg . jetbrains . kotlin . gradle . frontend . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠSer ge y ĠM ash kov Ċ Ġ*/ Ċ open Ġclass ĠWeb Pack Bundle Task Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġ@ get : Nested ĊĠĠĠ Ġprivate Ġval Ġconfig Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . frontend Extension . bundles (). filter Is Instance < Web Pack Extension >(). single OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠGradle Exception (" Only Ġone Ġwebpack Ġbundle Ġis Ġsupported ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Input File ĊĠĠĠ Ġprivate Ġval Ġweb Pack ConfigFile Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig . webpack ConfigFile ?. let Ġ{ Ġproject . file ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġproject . build Dir . resolve (" webpack . config . js ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Output Directory ĊĠĠĠ Ġval Ġbundle Dir Ġby Ġlazy Ġ{ ĠGenerate Web Pack Config Task . handle File ( project , Ġproject . frontend Extension . bundles Directory ) Ġ} ĊĊĠĠĠ Ġ@ get : Input File ĊĠĠĠ Ġval Ġsource File Ġby Ġlazy Ġ{ Ġkotlin Output ( project ) Ġ} ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġbuild Bundle () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġwebpack Version Ġ= Ġproject . build Dir . resolve (" node _ modules / webpack / package . json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠJson Sl ur per (). parse ( it ) Ġas ĠMap < String , ĠAny ?> Ġ} [" version "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġit Ġas ĠString Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Builder Commands Ġ= Ġarray ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Path ( project , Ġ" node "). first (). absolute Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . build Dir . resolve (" node _ modules / webpack / bin / webpack . js "). absolute Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- config ", Ġweb Pack ConfigFile . absolute Path ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġwebpack Major Version Ġ= Ġwebpack Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . split ('.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . toInt () ĊĠĠĠĠĠĠĠ Ġif Ġ( webpack Major Version Ġ!= Ġnull Ġ&& Ġwebpack Major Version Ġ>= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Builder Commands . addAll ( array Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- mode ", Ġconfig . mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠProcess Builder ( process Builder Commands ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory ( project . build Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start With Redirect On Fail ( project , Ġ" node Ġwebpack . js ") ĊĠĠĠ Ġ} Ċ } Ċ