From 67915e6db013b1c3711a848be22847f5cfb793ba Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Tue, 17 Aug 2021 18:38:24 +0800 Subject: [PATCH] Add a way to dependent android and iOS library from node modules --- doric-cli/assets-lib/.npmignore | 2 -- doric-cli/assets-lib/__doric_library__ | 0 doric-cli/assets/android/app/build.gradle | 15 +++++++++++++++ doric-cli/assets/android/settings.gradle | 11 +++++++++++ doric-cli/assets/iOS/Podfile | 14 ++++++++++++++ 5 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 doric-cli/assets-lib/__doric_library__ diff --git a/doric-cli/assets-lib/.npmignore b/doric-cli/assets-lib/.npmignore index 26e6363b..ee7e2cdb 100644 --- a/doric-cli/assets-lib/.npmignore +++ b/doric-cli/assets-lib/.npmignore @@ -1,5 +1,3 @@ -android/ -iOS/ .vscode/ node_modules/ example/ diff --git a/doric-cli/assets-lib/__doric_library__ b/doric-cli/assets-lib/__doric_library__ new file mode 100644 index 00000000..e69de29b diff --git a/doric-cli/assets/android/app/build.gradle b/doric-cli/assets/android/app/build.gradle index 67ba42ff..936f0dbe 100644 --- a/doric-cli/assets/android/app/build.gradle +++ b/doric-cli/assets/android/app/build.gradle @@ -47,4 +47,19 @@ afterEvaluate { task buildJSBundle(type: Exec) { workingDir project.rootDir.getParent() commandLine 'npm', 'run', 'build' +} + +def nodeModuleDir = new File(rootDir.getParent() + File.separator + "node_modules") +if (nodeModuleDir.isDirectory()) { + nodeModuleDir.listFiles().each { + if (new File(it.getAbsolutePath() + File.separator + "__doric_library__").exists()) { + println("Find doric plugin library ${it.name} in ${it}") + def name = it.name + android { + dependencies { + implementation project(":${name}") + } + } + } + } } \ No newline at end of file diff --git a/doric-cli/assets/android/settings.gradle b/doric-cli/assets/android/settings.gradle index 4db7a08b..002bdd10 100644 --- a/doric-cli/assets/android/settings.gradle +++ b/doric-cli/assets/android/settings.gradle @@ -1,2 +1,13 @@ include ':app' rootProject.name='__$__' + +def nodeModuleDir = new File(rootDir.getParent() + File.separator + "node_modules") +if (nodeModuleDir.isDirectory()) { + nodeModuleDir.listFiles().each { + if (new File(it.getAbsolutePath() + File.separator + "__doric_library__").exists()) { + println("Find doric plugin library ${it.name} in ${it}") + include ":${it.name}" + project(":${it.name}").projectDir = file(it.getAbsolutePath() + File.separator + "android") + } + } +} diff --git a/doric-cli/assets/iOS/Podfile b/doric-cli/assets/iOS/Podfile index d5a77325..791113ef 100644 --- a/doric-cli/assets/iOS/Podfile +++ b/doric-cli/assets/iOS/Podfile @@ -21,4 +21,18 @@ target '__$__' do pod 'SDWebImageWebPCoder' pod 'PINCache' + + dir_node_modules = File.join(__dir__,"../node_modules") + Dir.foreach(dir_node_modules) do |file| + if File.exist?(File.join(dir_node_modules, file, "__doric_library__")) + puts "Doric Library: #{File.join(dir_node_modules, file)}" + ret = Dir.glob(File.join(dir_node_modules,file,"*.podspec")) + if(ret.length > 0) + podspecPath = ret[0] + extn = File.extname podspecPath + podspecName = File.basename podspecPath, extn + pod podspecName, :path => File.join(dir_node_modules, file) + end + end + end end