diff --git a/vite-base/src/main/kotlin/config/ExternalVitePlugin.kt b/vite-base/src/main/kotlin/config/ExternalVitePlugin.kt index 9aa3eaa..58894c7 100644 --- a/vite-base/src/main/kotlin/config/ExternalVitePlugin.kt +++ b/vite-base/src/main/kotlin/config/ExternalVitePlugin.kt @@ -116,6 +116,12 @@ data class ExternalVitePlugin( * configuration will be generated as `import name from 'foo'`. */ val isNamedExport: Boolean = false, + + /** + * If `true`, the plugin dependency will not be added to the `package.json` file. + * In this case, it is assumed that the [packageName] contains a local path. + */ + val isLocal: Boolean = false, ) : Serializable { override fun toString() = "$packageName $version" diff --git a/vite-base/src/main/kotlin/config/ViteConfig.kt b/vite-base/src/main/kotlin/config/ViteConfig.kt index 1e88c54..e4232ad 100644 --- a/vite-base/src/main/kotlin/config/ViteConfig.kt +++ b/vite-base/src/main/kotlin/config/ViteConfig.kt @@ -164,6 +164,8 @@ interface ViteConfig { @Language("JavaScript", prefix = "const a = ") configuration: String? = null, /** Whether the package uses default or named exports. See [ExternalVitePlugin.isNamedExport]. */ isNamedExport: Boolean = false, + /** Whether the packageName points to a local file. See [ExternalVitePlugin.isLocal]. */ + isLocal: Boolean = false ) { plugins.add( ExternalVitePlugin( @@ -171,7 +173,8 @@ interface ViteConfig { packageName = packageName, version = version, configuration = configuration, - isNamedExport = isNamedExport + isNamedExport = isNamedExport, + isLocal = isLocal ) ) } diff --git a/vite-kotlin/src/main/kotlin/tasks/Dependencies.kt b/vite-kotlin/src/main/kotlin/tasks/Dependencies.kt index 8176425..f905ca8 100644 --- a/vite-kotlin/src/main/kotlin/tasks/Dependencies.kt +++ b/vite-kotlin/src/main/kotlin/tasks/Dependencies.kt @@ -14,7 +14,7 @@ internal fun configureDependencies(project: Project, config: ViteConfig, targetN dependencies { implementation(devNpm("vite", config.version.get())) - for (plugin in config.plugins.get()) { + for (plugin in config.plugins.get().filterNot { it.isLocal }) { implementation(devNpm(plugin.packageName, plugin.version)) } } diff --git a/vite-kotlin/src/main/kotlin/tasks/ViteExecTask.kt b/vite-kotlin/src/main/kotlin/tasks/ViteExecTask.kt index 02bdd0e..5fb0f85 100644 --- a/vite-kotlin/src/main/kotlin/tasks/ViteExecTask.kt +++ b/vite-kotlin/src/main/kotlin/tasks/ViteExecTask.kt @@ -46,7 +46,9 @@ abstract class KotlinViteExec @Inject constructor( @get:Internal override val requiredNpmDependencies: Set get() = setOf(NpmPackageVersion("vite", config.version.get())) - .plus(config.plugins.get().map { NpmPackageVersion(it.packageName, it.version) }) + .plus(config.plugins.get().filterNot { it.isLocal }.map { + NpmPackageVersion(it.packageName, it.version) + }) init { val kotlinNodeJsSetup = if (targetType == "js") "kotlinNodeJsSetup" else "kotlinWasmNodeJsSetup"