[Gradle, JS] Add resolveFromModulesFirst option

When we collect all DCE'd files, we need, that webpack to watch on these files, not on node_modules module
This commit is contained in:
Ilya Goncharov
2019-10-17 17:41:45 +03:00
parent 51f4dc5af0
commit 174fd5975d
3 changed files with 23 additions and 2 deletions
@@ -96,6 +96,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
when (kind) {
BuildVariantKind.RELEASE -> {
it.resolveFromModulesFirst = true
it.dependsOn(dceTask)
}
BuildVariantKind.DEBUG -> {
@@ -139,6 +140,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
when (kind) {
BuildVariantKind.RELEASE -> {
it.resolveFromModulesFirst = true
it.dependsOn(dceTask)
project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).dependsOn(it)
}
@@ -56,6 +56,9 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies {
val entry: File
get() = compilation.compileKotlinTask.outputFile
@Input
var resolveFromModulesFirst: Boolean = false
@Suppress("unused")
val runtimeClasspath: FileCollection
@InputFiles get() = compilation.compileDependencyFiles
@@ -126,7 +129,8 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies {
bundleAnalyzerReportDir = if (report) reportDir else null,
devServer = devServer,
devtool = devtool,
sourceMaps = sourceMaps
sourceMaps = sourceMaps,
resolveFromModulesFirst = resolveFromModulesFirst
)
)
@@ -31,7 +31,8 @@ data class KotlinWebpackConfig(
val sourceMaps: Boolean = false,
val export: Boolean = true,
val progressReporter: Boolean = false,
val progressReporterPathFilter: String? = null
val progressReporterPathFilter: String? = null,
val resolveFromModulesFirst: Boolean = false
) {
fun getRequiredDependencies(versions: NpmVersions) =
mutableListOf<RequiredKotlinJsDependency>().also {
@@ -110,6 +111,7 @@ data class KotlinWebpackConfig(
)
appendEntry()
appendResolveModules()
appendSourceMaps()
appendDevServer()
appendReport()
@@ -219,6 +221,19 @@ data class KotlinWebpackConfig(
)
}
private fun Appendable.appendResolveModules() {
if (!resolveFromModulesFirst || entry == null || entry.parent == null) return
//language=JavaScript 1.8
appendln(
"""
// resolve modules
config.resolve.modules.unshift(${entry.parent.jsQuoted()})
""".trimIndent()
)
}
private fun Appendable.appendProgressReporter() {
if (!progressReporter) return