class UnimodulesPlugin implements Plugin { void apply(Project project) { project.configurations.configureEach { if (it.getName().startsWith('test') && project.file('./src/test').exists()) { project.dependencies.add(it.getName(), project.project(':unimodules-test-core')) } } project.ext.unimodule = { String dep, Closure closure = null -> Object dependency = null; if (new File(project.rootProject.projectDir.parentFile, 'package.json').exists()) { // Parent directory of the android project has package.json -- probably React Native dependency = project.project(":$dep") } else { throw new GradleException( "'unimodules-core.gradle' used in a project that seems not to be React Native project." ) } String configurationName = project.configurations.findByName("implementation") ? "implementation" : "compile" project.dependencies.add(configurationName, dependency, closure) } } } apply plugin: UnimodulesPlugin