[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:
+2
@@ -96,6 +96,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
|
|||||||
|
|
||||||
when (kind) {
|
when (kind) {
|
||||||
BuildVariantKind.RELEASE -> {
|
BuildVariantKind.RELEASE -> {
|
||||||
|
it.resolveFromModulesFirst = true
|
||||||
it.dependsOn(dceTask)
|
it.dependsOn(dceTask)
|
||||||
}
|
}
|
||||||
BuildVariantKind.DEBUG -> {
|
BuildVariantKind.DEBUG -> {
|
||||||
@@ -139,6 +140,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
|
|||||||
|
|
||||||
when (kind) {
|
when (kind) {
|
||||||
BuildVariantKind.RELEASE -> {
|
BuildVariantKind.RELEASE -> {
|
||||||
|
it.resolveFromModulesFirst = true
|
||||||
it.dependsOn(dceTask)
|
it.dependsOn(dceTask)
|
||||||
project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).dependsOn(it)
|
project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).dependsOn(it)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -56,6 +56,9 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies {
|
|||||||
val entry: File
|
val entry: File
|
||||||
get() = compilation.compileKotlinTask.outputFile
|
get() = compilation.compileKotlinTask.outputFile
|
||||||
|
|
||||||
|
@Input
|
||||||
|
var resolveFromModulesFirst: Boolean = false
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val runtimeClasspath: FileCollection
|
val runtimeClasspath: FileCollection
|
||||||
@InputFiles get() = compilation.compileDependencyFiles
|
@InputFiles get() = compilation.compileDependencyFiles
|
||||||
@@ -126,7 +129,8 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies {
|
|||||||
bundleAnalyzerReportDir = if (report) reportDir else null,
|
bundleAnalyzerReportDir = if (report) reportDir else null,
|
||||||
devServer = devServer,
|
devServer = devServer,
|
||||||
devtool = devtool,
|
devtool = devtool,
|
||||||
sourceMaps = sourceMaps
|
sourceMaps = sourceMaps,
|
||||||
|
resolveFromModulesFirst = resolveFromModulesFirst
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+16
-1
@@ -31,7 +31,8 @@ data class KotlinWebpackConfig(
|
|||||||
val sourceMaps: Boolean = false,
|
val sourceMaps: Boolean = false,
|
||||||
val export: Boolean = true,
|
val export: Boolean = true,
|
||||||
val progressReporter: Boolean = false,
|
val progressReporter: Boolean = false,
|
||||||
val progressReporterPathFilter: String? = null
|
val progressReporterPathFilter: String? = null,
|
||||||
|
val resolveFromModulesFirst: Boolean = false
|
||||||
) {
|
) {
|
||||||
fun getRequiredDependencies(versions: NpmVersions) =
|
fun getRequiredDependencies(versions: NpmVersions) =
|
||||||
mutableListOf<RequiredKotlinJsDependency>().also {
|
mutableListOf<RequiredKotlinJsDependency>().also {
|
||||||
@@ -110,6 +111,7 @@ data class KotlinWebpackConfig(
|
|||||||
)
|
)
|
||||||
|
|
||||||
appendEntry()
|
appendEntry()
|
||||||
|
appendResolveModules()
|
||||||
appendSourceMaps()
|
appendSourceMaps()
|
||||||
appendDevServer()
|
appendDevServer()
|
||||||
appendReport()
|
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() {
|
private fun Appendable.appendProgressReporter() {
|
||||||
if (!progressReporter) return
|
if (!progressReporter) return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user