/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . targets . js . sub targets Ċ Ċ import Ġorg . gradle . language . base . plugins . Lifecycle Base Plugin Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Kotlin Js Compilation Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . Kotlin Js Target Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . dsl . Kotlin Js Browser Dsl Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . nodejs . Node Js Root Plugin Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . testing . Kotlin Js Test Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . webpack . Kotlin Webpack Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . webpack . Kotlin Webpack Config Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . register Task Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠKotlin Browser Js Ġ@ Inject Ġconstructor ( target : ĠKotlin Js Target ) Ġ: ĊĠĠĠ ĠKotlin Js Sub Target ( target , Ġ" browser "), ĊĠĠĠ ĠKotlin Js Browser Dsl Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġtest Task Description : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Run Ġall Ġ${ target . name } Ġtests Ġinside Ġbrowser Ġusing Ġk arma Ġand Ġwebpack " ĊĊĠĠĠ Ġprivate Ġval Ġwebpack Task Name Ġ= Ġdis amb igu ate Camel Case d (" webpack ") ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure Default Test Framework ( it : ĠKotlin Js Test ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . use K arma Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Chrome Head less () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Task ( body : ĠKotlin Webpack . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( project . tasks . get ByName ( run Task Name ) Ġas ĠKotlin Webpack ). body () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwebpack Task ( body : ĠKotlin Webpack . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( project . tasks . get ByName ( webpack Task Name ) Ġas ĠKotlin Webpack ). body () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure Run ( compilation : ĠKotlin Js Compilation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġcompilation . target . project ĊĠĠĠĠĠĠĠ Ġval Ġnode Js Ġ= ĠNode Js Root Plugin . apply ( project . root Project ) ĊĊĠĠĠĠĠĠĠ Ġproject . register Task < Kotlin Webpack >( dis amb igu ate Camel Case d (" webpack ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompile Kotlin Task Ġ= Ġcompilation . compile Kotlin Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . depends On ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Js . npm Install Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Kotlin Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . compilation Ġ= Ġcompilation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" build Ġwebpack Ġbundle " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName ( Lifecycle Base Plugin . AS SE MB LE _ TASK _ NAME ). depends On ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrun Ġ= Ġproject . register Task < Kotlin Webpack >( dis amb igu ate Camel Case d (" run ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompile Kotlin Task Ġ= Ġcompilation . compile Kotlin Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . depends On ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Js . npm Install Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Kotlin Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . project . tasks . get ByName ( compilation . process Resources Task Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . bin Ġ= Ġ" webpack - dev - server / bin / webpack - dev - server . js " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . compilation Ġ= Ġcompilation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" start Ġwebpack Ġdev Ġserver " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . dev Server Ġ= ĠKotlin Webpack Config . Dev Server ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Base Ġ= ĠlistOf ( compilation . output . resources Dir . canonical Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . outputs . up ToDate When Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtarget . run Task . depends On ( run ) ĊĠĠĠ Ġ} Ċ }