From 9a3e54a5080c8fb4b51e6f205f41541ee22bcd96 Mon Sep 17 00:00:00 2001 From: songchenglin3 <353833373@qq.com> Date: Wed, 16 Oct 2024 18:39:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=A5=E5=85=A5=20harmony=20cpp=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .npmrc | 9 ----- package.json | 3 +- packages/nutui-taro-demo/config/index.js | 17 ++++++--- packages/nutui-taro-demo/package.json | 44 +++++++++++++----------- scripts/harmony/clone-jdharmony.js | 13 ++++--- 6 files changed, 48 insertions(+), 39 deletions(-) delete mode 100644 .npmrc diff --git a/.gitignore b/.gitignore index 02f280fe78..47a5d34be7 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ package-lock.json /site_docs /coverage /packages/nutui-jdharmony +/packages/nutui-jdharmonycpp # local env files .env.local diff --git a/.npmrc b/.npmrc deleted file mode 100644 index acb7cbcb25..0000000000 --- a/.npmrc +++ /dev/null @@ -1,9 +0,0 @@ -registry="https://registry.yarnpkg.com/" -strict-peer-dependencies=false - -{SCOPE}:registry=https://npm.pkg.github.com -@jdreact:registry=http://registry.m.jd.com/ -@jdtaro:registry=http://registry.m.jd.com/ -@test:registry=http://registry.m.jd.com/ -@jmfe:registry=http://registry.m.jd.com/ -@dongdesign:registry=http://registry.m.jd.com/ diff --git a/package.json b/package.json index 3616a4b903..40d6cd7b8d 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,8 @@ "dev:taro:h5:jmapp": "pnpm --dir ./packages/nutui-taro-demo dev:h5:jmapp", "dev:taro:alipay": "pnpm --dir ./packages/nutui-taro-demo dev:alipay", "dev:taro:harmony": "pnpm run update:taro:entry && pnpm --dir ./packages/nutui-taro-demo dev:harmony", - "dev:taro:jdharmony": "pnpm run clone:jdharmony && pnpm run update:taro:entry && pnpm --dir ./packages/nutui-taro-demo dev:jdharmony", + "dev:taro:jdharmony": "pnpm run clone:jdharmony && pnpm run update:taro:entry && pnpm --dir ./packages/nutui-taro-demo dev:jdharmony", + "dev:taro:jdharmonycpp": "pnpm run clone:jdharmony cpp && pnpm run update:taro:entry && pnpm --dir ./packages/nutui-taro-demo dev:jdharmonycpp", "dev:taro:jdhybrid": "pnpm run update:taro:entry && pnpm --dir ./packages/nutui-taro-demo dev:jdhybrid", "clone:jdharmony": "node ./scripts/harmony/clone-jdharmony.js", "update:taro:entry": "node ./scripts/rn/update-taro-entry", diff --git a/packages/nutui-taro-demo/config/index.js b/packages/nutui-taro-demo/config/index.js index f101e4a2da..9a9a22da58 100644 --- a/packages/nutui-taro-demo/config/index.js +++ b/packages/nutui-taro-demo/config/index.js @@ -16,8 +16,7 @@ let plugins = !['harmony', 'jdharmony', 'rn', 'jdrn'].includes( : [] if ( - process.env.TARO_ENV === 'harmony' || - process.env.TARO_ENV === 'jdharmony' + process.env.TARO_ENV === 'harmony' ) { plugins.push('@tarojs/plugin-platform-harmony-ets') } @@ -50,6 +49,9 @@ if (process.env.TARO_ENV === 'jdhybrid') { if (process.env.TARO_ENV === 'jdharmony') { plugins = ['@jdtaro/taro-platform-jdharmony'] } +if (process.env.TARO_ENV === 'jdharmony_cpp') { + plugins = ['@jdtaro/plugin-platform-jdharmony-cpp'] +} // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error // if (process.env.TARO_ENV === 'jdharmony') { @@ -57,6 +59,7 @@ if (process.env.TARO_ENV === 'jdharmony') { // } const isHarmony = process.env.TARO_ENV === 'harmony' +const isHarmonycpp = process.env.TARO_ENV === 'jdharmony_cpp' const config = { projectName: 'first', @@ -121,10 +124,16 @@ const config = { framework: 'react', // harmony 相关配置 harmony: { + ohPackage: { + dependencies: { + '@jd-oh/taro_library': '2.0.70', + '@jd-oh/taro_cpp_library': '0.0.88-beta.0' + }, + }, // 将编译方式设置为使用 Vite 编译 compiler: { type: 'vite', vitePlugins: [injectScss()] }, // 【必填】鸿蒙主应用的绝对路径,例如: - projectPath: path.resolve(process.cwd(), isHarmony ? '../nutui-harmony' : '../nutui-jdharmony'), + projectPath: path.resolve(process.cwd(), isHarmony ? '../nutui-harmony' : isHarmonycpp ? '../nutui-jdharmonycpp' : '../nutui-jdharmony'), // 【可选】HAP 的名称,默认为 'entry' hapName: isHarmony ? 'entry' : 'library', useNesting: true, @@ -132,7 +141,7 @@ const config = { pxtransform: { enable: true, // 包含 `nut-` 的类名选择器中的 px 单位不会被解析 - config: { selectorBlackList: ['nut-', 'demo', 'index', 'page'] }, + // config: { selectorBlackList: ['nut-', 'demo', 'index', 'page'] }, }, url: { enable: true, diff --git a/packages/nutui-taro-demo/package.json b/packages/nutui-taro-demo/package.json index 7071bb3836..c400195961 100644 --- a/packages/nutui-taro-demo/package.json +++ b/packages/nutui-taro-demo/package.json @@ -22,6 +22,7 @@ "build:jdhybrid": "taro build --type jdhybrid", "dev:harmony": "npm run build:harmony -- --watch", "dev:jdharmony": "pnpm exec taro build native-components --type jdharmony", + "dev:jdharmonycpp": "pnpm exec taro build native-components --type jdharmony_cpp", "dev:weapp": "npm run build:weapp -- --watch", "dev:swan": "npm run build:swan -- --watch", "dev:alipay": "npm run build:alipay -- --watch", @@ -57,25 +58,26 @@ "@jdtaro/plugin-platform-jdhybrid": "0.2.1", "@jdtaro/plugin-platform-jdrn": "2.0.0-beta.0", "@jdtaro/taro-platform-jdharmony": "2.0.70", + "@jdtaro/plugin-platform-jdharmony-cpp": "0.0.88-beta.0", "@nutui/touch-emulator": "^1.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@tarojs/components": "4.0.2", - "@tarojs/helper": "4.0.2", - "@tarojs/plugin-framework-react": "4.0.2", - "@tarojs/plugin-html": "4.0.2", - "@tarojs/plugin-platform-alipay": "4.0.2", - "@tarojs/plugin-platform-h5": "4.0.2", - "@tarojs/plugin-platform-jd": "4.0.2", - "@tarojs/plugin-platform-qq": "4.0.2", - "@tarojs/plugin-platform-swan": "4.0.2", - "@tarojs/plugin-platform-tt": "4.0.2", - "@tarojs/plugin-platform-weapp": "4.0.2", - "@tarojs/react": "4.0.2", - "@tarojs/router": "4.0.2", - "@tarojs/runtime": "4.0.2", - "@tarojs/shared": "4.0.2", - "@tarojs/taro": "4.0.2", - "@tarojs/taro-h5": "4.0.2", + "@tarojs/components": "4.0.0-beta.138", + "@tarojs/helper": "4.0.0-beta.138", + "@tarojs/plugin-framework-react": "4.0.0-beta.138", + "@tarojs/plugin-html": "4.0.0-beta.138", + "@tarojs/plugin-platform-alipay": "4.0.0-beta.138", + "@tarojs/plugin-platform-h5": "4.0.0-beta.138", + "@tarojs/plugin-platform-jd": "4.0.0-beta.138", + "@tarojs/plugin-platform-qq": "4.0.0-beta.138", + "@tarojs/plugin-platform-swan": "4.0.0-beta.138", + "@tarojs/plugin-platform-tt": "4.0.0-beta.138", + "@tarojs/plugin-platform-weapp": "4.0.0-beta.138", + "@tarojs/react": "4.0.0-beta.138", + "@tarojs/router": "4.0.0-beta.138", + "@tarojs/runtime": "4.0.0-beta.138", + "@tarojs/shared": "4.0.0-beta.138", + "@tarojs/taro": "4.0.0-beta.138", + "@tarojs/taro-h5": "4.0.0-beta.138", "babel-plugin-import": "^1.13.8", "lodash.isequal": "^4.5.0", "lodash.kebabcase": "^4.1.1", @@ -87,10 +89,10 @@ }, "devDependencies": { "@babel/core": "^7.23.9", - "@tarojs/cli": "4.0.2", - "@tarojs/plugin-platform-harmony-ets": "4.0.2", - "@tarojs/vite-runner": "4.0.2", - "@tarojs/webpack5-runner": "4.0.2", + "@tarojs/cli": "4.0.0-beta.138", + "@tarojs/plugin-platform-harmony-ets": "4.0.0-beta.138", + "@tarojs/vite-runner": "4.0.0-beta.138", + "@tarojs/webpack5-runner": "4.0.0-beta.138", "@types/react": "^18.2.57", "@types/react-dom": "^18.2.19", "@types/react-router-dom": "^5.3.3", diff --git a/scripts/harmony/clone-jdharmony.js b/scripts/harmony/clone-jdharmony.js index e0b16dc0a4..687bc25b7f 100644 --- a/scripts/harmony/clone-jdharmony.js +++ b/scripts/harmony/clone-jdharmony.js @@ -3,25 +3,30 @@ const os = require('os') const path = require('path') const { remove, ensureDir } = require('fs-extra') const fs = require('fs') +const args = process.argv.splice(2) const home = os.homedir() const temp = `${process.cwd()}/packages` +console.log('args', args) + +const platform = args && args[0] === 'cpp' ? 'jdharmonycpp' : 'jdharmony' + async function cloneJdHarmony() { // 填写coding地址 const remote = '' - const branch = 'master' + const branch = args && args[0] === 'cpp' ? 'master-cpp': 'master' const git = simpleGit({ baseDir: temp, }) - console.log(`Clone jdharmony, branch: ${branch}`) + console.log(`Clone ${platform}, branch: ${branch}`) await git.clone(remote, ['-b', branch, '--depth', '1']) console.log(`Clone completed successfully.`) // 修改文件夹名称 const harmonyPath = path.join(temp, 'JDHarmony') - const harmonyPathNew = path.join(temp, 'nutui-jdharmony') + const harmonyPathNew = path.join(temp, `nutui-${platform}`) await remove(harmonyPathNew) await ensureDir(harmonyPathNew) fs.renameSync(harmonyPath, harmonyPathNew) @@ -34,7 +39,7 @@ async function clone() { // 判断temp目录是否存在JDHarmony文件夹,如果不存在不存在则执行clone() -const harmonyPath = path.join(temp, 'nutui-jdharmony') +const harmonyPath = path.join(temp, `nutui-${platform}`) if (!fs.existsSync(harmonyPath)) { clone() console.log(`Clone JDHarmony successfully.`)