@tarojs/plugin-platform-harmony-ets 4.0.0-beta.4 → 4.0.0-beta.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/apis/base/system.ts +53 -20
  2. package/dist/apis/canvas/index.ts +10 -1
  3. package/dist/apis/framework/index.ts +1 -5
  4. package/dist/apis/index.ts +32 -17
  5. package/dist/apis/network/request.ts +5 -5
  6. package/dist/apis/route/index.ts +15 -0
  7. package/dist/apis/storage/index.ts +205 -63
  8. package/dist/apis/ui/animation/animation.ts +2 -1
  9. package/dist/apis/utils/index.ts +1 -1
  10. package/dist/apis/wxml/IntersectionObserver.ts +18 -10
  11. package/dist/apis/wxml/index.ts +2 -0
  12. package/dist/apis/wxml/selectorQuery.ts +18 -9
  13. package/dist/components-harmony-ets/button.ets +48 -34
  14. package/dist/components-harmony-ets/canvas.ets +51 -0
  15. package/dist/components-harmony-ets/checkbox.ets +69 -61
  16. package/dist/components-harmony-ets/form.ets +51 -29
  17. package/dist/components-harmony-ets/icon.ets +34 -19
  18. package/dist/components-harmony-ets/image.ets +27 -14
  19. package/dist/components-harmony-ets/index.ets +76 -0
  20. package/dist/components-harmony-ets/innerHtml.ets +11 -6
  21. package/dist/components-harmony-ets/input.ets +41 -40
  22. package/dist/components-harmony-ets/label.ets +71 -42
  23. package/dist/components-harmony-ets/movableArea.ets +126 -0
  24. package/dist/components-harmony-ets/movableView.ets +73 -0
  25. package/dist/components-harmony-ets/picker.ets +42 -38
  26. package/dist/components-harmony-ets/progress.ets +52 -0
  27. package/dist/components-harmony-ets/pseudo.ets +80 -0
  28. package/dist/components-harmony-ets/radio.ets +71 -64
  29. package/dist/components-harmony-ets/richText.ets +14 -30
  30. package/dist/components-harmony-ets/scrollView.ets +57 -30
  31. package/dist/components-harmony-ets/slider.ets +15 -14
  32. package/dist/components-harmony-ets/style.ets +385 -130
  33. package/dist/components-harmony-ets/swiper.ets +32 -20
  34. package/dist/components-harmony-ets/switch.ets +30 -28
  35. package/dist/components-harmony-ets/text.ets +121 -51
  36. package/dist/components-harmony-ets/textArea.ets +35 -34
  37. package/dist/components-harmony-ets/utils/AttributeManager.ets +1 -1
  38. package/dist/components-harmony-ets/utils/DynamicCenter.ts +1 -1
  39. package/dist/components-harmony-ets/utils/flexManager.ets +43 -19
  40. package/dist/components-harmony-ets/utils/helper.ets +4 -5
  41. package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
  42. package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
  43. package/dist/components-harmony-ets/utils/index.ts +50 -51
  44. package/dist/components-harmony-ets/utils/styles.ets +164 -92
  45. package/dist/components-harmony-ets/video.ets +34 -20
  46. package/dist/components-harmony-ets/view.ets +62 -29
  47. package/dist/components-harmony-ets/webView.ets +40 -34
  48. package/dist/index.d.ts +152 -0
  49. package/dist/index.js +74 -37
  50. package/dist/index.js.map +1 -1
  51. package/dist/runtime-ets/bom/document.ts +1 -1
  52. package/dist/runtime-ets/bom/window.ts +7 -0
  53. package/dist/runtime-ets/current.ts +3 -0
  54. package/dist/runtime-ets/dom/bind.ts +20 -6
  55. package/dist/runtime-ets/dom/cssNesting.ts +393 -0
  56. package/dist/runtime-ets/dom/cssStyleDeclaration.ts +12 -40
  57. package/dist/runtime-ets/dom/document.ts +23 -8
  58. package/dist/runtime-ets/dom/element/canvas.ts +136 -0
  59. package/dist/runtime-ets/dom/element/element.ts +218 -51
  60. package/dist/runtime-ets/dom/element/form.ts +15 -18
  61. package/dist/runtime-ets/dom/element/index.ts +18 -2
  62. package/dist/runtime-ets/dom/element/movableArea.ts +12 -0
  63. package/dist/runtime-ets/dom/element/movableView.ts +193 -0
  64. package/dist/runtime-ets/dom/element/normal.ts +13 -4
  65. package/dist/runtime-ets/dom/element/progress.ts +12 -0
  66. package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
  67. package/dist/runtime-ets/dom/element/text.ts +1 -8
  68. package/dist/runtime-ets/dom/element/video.ts +5 -3
  69. package/dist/runtime-ets/dom/element/webView.ts +8 -0
  70. package/dist/runtime-ets/dom/event.ts +0 -1
  71. package/dist/runtime-ets/dom/eventTarget.ts +0 -3
  72. package/dist/runtime-ets/dom/node.ts +45 -27
  73. package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +330 -230
  74. package/dist/runtime-ets/dom/stylesheet/index.ts +28 -308
  75. package/dist/runtime-ets/dom/stylesheet/type.ts +28 -9
  76. package/dist/runtime-ets/dom/stylesheet/util.ts +33 -27
  77. package/dist/runtime-ets/index.ts +2 -2
  78. package/dist/runtime-ets/interface/event.ts +1 -1
  79. package/dist/runtime-ets/utils/index.ts +43 -10
  80. package/dist/runtime-ets/utils/info.ts +1 -1
  81. package/dist/runtime-framework/react/app.ts +7 -2
  82. package/dist/runtime-framework/react/index.ts +0 -2
  83. package/dist/runtime-framework/react/native-page.ts +22 -12
  84. package/dist/runtime-framework/react/page.ts +3 -8
  85. package/dist/runtime-framework/solid/app.ts +25 -45
  86. package/dist/runtime-framework/solid/connect.ts +21 -3
  87. package/dist/runtime-framework/solid/hooks.ts +16 -11
  88. package/dist/runtime-framework/solid/index.ts +6 -2
  89. package/dist/runtime-framework/solid/page.ts +84 -30
  90. package/dist/runtime-framework/solid/reconciler/props.ts +65 -20
  91. package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
  92. package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
  93. package/dist/runtime-framework/solid/utils/index.ts +0 -2
  94. package/dist/runtime-utils.d.ts +827 -0
  95. package/dist/runtime-utils.js +293 -119
  96. package/dist/runtime-utils.js.map +1 -1
  97. package/dist/runtime.d.ts +1 -0
  98. package/dist/runtime.js +293 -119
  99. package/dist/runtime.js.map +1 -1
  100. package/index.js +3 -1
  101. package/package.json +13 -13
  102. package/types/index.d.ts +4 -0
  103. package/dist/runtime-ets/utils/bind.ts +0 -24
  104. /package/dist/components-harmony-ets/{index.ts → tag.ts} +0 -0
  105. /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
@@ -0,0 +1,152 @@
1
+ /* eslint-disable no-console */
2
+ import { IFileType, TConfig, TaroPlatform, IPluginContext, TaroPlatformBase } from "@tarojs/service";
3
+ import { PLATFORM_TYPE } from "@tarojs/shared";
4
+ declare abstract class TaroPlatformHarmony<T extends TConfig = TConfig> extends TaroPlatform<T> {
5
+ platformType: PLATFORM_TYPE;
6
+ globalObject: string;
7
+ abstract fileType: IFileType;
8
+ abstract useETS: boolean;
9
+ abstract useJSON5: boolean;
10
+ taroComponentsPath: string;
11
+ /**
12
+ * 1. 清空 dist 文件夹
13
+ * 2. 输出编译提示
14
+ */
15
+ private setup;
16
+ private setupHarmonyApp;
17
+ protected printDevelopmentTip(): void;
18
+ /**
19
+ * 返回当前项目内的 runner 包
20
+ */
21
+ protected getRunner(): Promise<any>;
22
+ /**
23
+ * 准备 runner 参数
24
+ * @param extraOptions 需要额外合入 Options 的配置项
25
+ */
26
+ protected getOptions(extraOptions?: {}): any;
27
+ /**
28
+ * 调用 runner 开始编译
29
+ * @param extraOptions 需要额外传入 runner 的配置项
30
+ */
31
+ private build;
32
+ private buildHarmonyApp;
33
+ /**
34
+ * 调用 runner 开启编译
35
+ */
36
+ start(): Promise<void>;
37
+ }
38
+ declare class Harmony extends TaroPlatformHarmony {
39
+ #private;
40
+ platform: string;
41
+ globalObject: string;
42
+ fileType: {
43
+ templ: string;
44
+ style: string;
45
+ config: string;
46
+ script: string;
47
+ };
48
+ useETS: boolean;
49
+ useJSON5: boolean;
50
+ runtimePath: string[] | string;
51
+ taroComponentsPath: string;
52
+ apiEntryList: RegExp[];
53
+ constructor(ctx: IPluginContext, config: TConfig);
54
+ get framework(): "solid" | "vue3" | "react" | "preact" | "nerv" | "vue";
55
+ get aliasFramework(): string;
56
+ get apiLibrary(): string;
57
+ get apiEntry(): RegExp[];
58
+ get componentLibrary(): string;
59
+ get runtimeLibrary(): string;
60
+ get runtimeFrameworkLibrary(): string;
61
+ get defineConstants(): Record<string, string> | undefined;
62
+ extensions: string[];
63
+ excludeLibraries: (string | RegExp)[];
64
+ externalDeps: [
65
+ string,
66
+ RegExp,
67
+ string?
68
+ ][];
69
+ harmonyScope: RegExp[];
70
+ indexOfLibraries(lib: string): number;
71
+ removeFromLibraries(lib: string): void;
72
+ moveLibraries(lib: string, target?: string, basedir?: string, sync?: boolean): void;
73
+ replaceDefineValue(code: string, define: Record<string, string>): string;
74
+ /**
75
+ * 修改 Vite 配置
76
+ */
77
+ modifyViteConfig(): void;
78
+ handleResourceEmit(outDir: string, basedir?: string): void;
79
+ }
80
+ declare module HarmonyWrapper {
81
+ export { Harmony };
82
+ }
83
+ import HarmonyOS_ArkTS = HarmonyWrapper.Harmony;
84
+ declare class Harmony$0 extends TaroPlatformBase {
85
+ platform: string;
86
+ globalObject: string;
87
+ runtimePath: string;
88
+ taroComponentsPath: string;
89
+ fileType: {
90
+ templ: string;
91
+ style: string;
92
+ config: string;
93
+ script: string;
94
+ };
95
+ template: any;
96
+ /**
97
+ * 1. setupTransaction - init
98
+ * 2. setup
99
+ * 3. setupTransaction - close
100
+ * 4. buildTransaction - init
101
+ * 5. build
102
+ * 6. buildTransaction - close
103
+ */
104
+ constructor(ctx: any, config: any);
105
+ /**
106
+ * 增加组件或修改组件属性
107
+ */
108
+ modifyComponents(): void;
109
+ /**
110
+ * 不需要转 rpx
111
+ */
112
+ modifyPostcssConfigs(config: Record<string, any>): void;
113
+ /**
114
+ * 模板自定义组件 js
115
+ * 等鸿蒙支持 template 后需要重构
116
+ */
117
+ addEntry(): void;
118
+ /**
119
+ * 把 app、pages、自定义组件的 js 改造为鸿蒙的 export default 导出形式
120
+ */
121
+ modifyTaroExport(): void;
122
+ /**
123
+ * 修改最终的编译产物
124
+ * 1. 生成模板自定义组件的 xml、css 文件
125
+ * 2. 删除多余的文件
126
+ * 3. 把 components-harmony 中被使用到的组件移动到输出目录
127
+ */
128
+ modifyBuildAssets(ctx: any, config: any): void;
129
+ modifyWebpackConfig(): void;
130
+ modifyHarmonyConfig(pages: any, { projectPath, hapName, name }: {
131
+ projectPath: any;
132
+ hapName: any;
133
+ name: any;
134
+ }): void;
135
+ modifyHostPackage({ projectPath, hapName }: {
136
+ projectPath: any;
137
+ hapName?: string | undefined;
138
+ }): Promise<any>;
139
+ getChunkEntryModule(compilation: any, chunk: any, compiler?: string): any;
140
+ checkMetaType(entryModule: any): boolean;
141
+ isHarmonyRequest(request: string): boolean;
142
+ }
143
+ declare module HarmonyWrapper {
144
+ export { Harmony$0 as Harmony };
145
+ }
146
+ import HarmonyOS_JSUI = HarmonyWrapper.Harmony;
147
+ interface IOptions {
148
+ disableArkTS?: boolean;
149
+ useConfigName?: string;
150
+ }
151
+ declare const _default: (ctx: IPluginContext, options?: IOptions) => void;
152
+ export { _default as default, HarmonyOS_ArkTS, HarmonyOS_JSUI, IOptions };
package/dist/index.js CHANGED
@@ -4,10 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var helper = require('@tarojs/helper');
6
6
  var path = require('node:path');
7
- var runnerUtils = require('@tarojs/runner-utils');
8
- var shared = require('@tarojs/shared');
9
7
  var service = require('@tarojs/service');
10
8
  var _package = require('@tarojs/service/dist/utils/package');
9
+ var shared = require('@tarojs/shared');
11
10
  var webpackSources = require('webpack-sources');
12
11
  var template = require('@tarojs/shared/dist/template');
13
12
 
@@ -248,7 +247,7 @@ class TaroPlatformHarmony extends service.TaroPlatform {
248
247
  SUPPORT_TARO_POLYFILL: 'disabled',
249
248
  },
250
249
  });
251
- return Object.assign(Object.assign(Object.assign({}, config), { buildAdapter: config.platform, fileType: this.fileType, platformType: this.platformType, useETS: this.useETS, useJSON5: this.useJSON5 }), extraOptions);
250
+ return Object.assign(Object.assign(Object.assign({}, config), { buildAdapter: config.platform, fileType: this.fileType, platformType: this.platformType, useETS: this.useETS, useNesting: config.useNesting, useJSON5: this.useJSON5 }), extraOptions);
252
251
  }
253
252
  /**
254
253
  * 调用 runner 开始编译
@@ -303,6 +302,9 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
303
302
  this.useJSON5 = true;
304
303
  this.runtimePath = [];
305
304
  this.taroComponentsPath = `${PACKAGE_NAME}/dist/components-harmony-ets`;
305
+ this.apiEntryList = [
306
+ /(@tarojs[\\/]plugin-platform-harmony-ets|taro-platform-harmony)[\\/]dist[\\/]apis[\\/]index\.ts/,
307
+ ];
306
308
  _Harmony_defineConstants.set(this, {});
307
309
  this.extensions = ['.js', '.jsx', '.ts', '.tsx', '.cjs', '.mjs', '.mts', '.vue', '.ets', '.d.ts'];
308
310
  this.excludeLibraries = [];
@@ -317,14 +319,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
317
319
  ['react', /^react$|react[\\/]cjs/],
318
320
  ['react/jsx-runtime', /^react[\\/]jsx-runtime$/], // Note: React 环境下自动注入,避免重复
319
321
  ];
322
+ this.harmonyScope = [...HARMONY_SCOPES];
323
+ const that = this;
320
324
  this.setupTransaction.addWrapper({
321
325
  close() {
322
- this.modifyViteConfig();
326
+ that.modifyViteConfig();
323
327
  },
324
328
  });
325
329
  ctx.onBuildFinish(() => {
326
330
  const outDir = path__namespace.resolve(process.cwd(), config.outputRoot);
327
- this.handleResourceEmit(outDir);
331
+ that.handleResourceEmit(outDir);
328
332
  });
329
333
  }
330
334
  get framework() {
@@ -336,6 +340,9 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
336
340
  get apiLibrary() {
337
341
  return path__namespace.resolve(__dirname, './apis');
338
342
  }
343
+ get apiEntry() {
344
+ return this.apiEntryList;
345
+ }
339
346
  get componentLibrary() {
340
347
  return path__namespace.resolve(__dirname, './components-harmony-ets');
341
348
  }
@@ -372,8 +379,8 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
372
379
  return;
373
380
  if (this.excludeLibraries.some(e => typeof e === 'string' ? e === lib : e.test(lib)))
374
381
  return;
382
+ const { outputRoot, chorePackagePrefix } = this.ctx.runOpts.config;
375
383
  if (sync) {
376
- const { outputRoot } = this.ctx.runOpts.config;
377
384
  const targetPath = path__namespace.join(outputRoot, helper.NODE_MODULES);
378
385
  // FIXME 不支持 alias 配置
379
386
  const libName = lib;
@@ -424,6 +431,7 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
424
431
  if ((/(?:import\s|from\s|require\()['"]([\\/.][^'"\s]+)['"]\)?/g.test(code)
425
432
  || /\/{3}\s<reference\spath=['"][^'"\s]+['"]\s\/>/g.test(code))
426
433
  && `${libName}${path__namespace.extname(libDir)}` !== libDir) {
434
+ // Note: 文件包含包内引用的依赖
427
435
  const pkgPath = path__namespace.relative(libName, libDir);
428
436
  if (new RegExp(`^index(${this.extensions.map(e => e.replace('.', '\\.')).join('|')})$`).test(pkgPath)) {
429
437
  // Note: 入口为 index 场景
@@ -474,16 +482,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
474
482
  }
475
483
  else if (stat.isFile()) {
476
484
  let code = helper.fs.readFileSync(lib, { encoding: 'utf8' });
477
- // TODO: 后续这部分代码应该根据使用的框架抽离到对应的平台插件处
478
- if ([/(@tarojs[\\/]plugin-platform-harmony-ets|taro-platform-harmony)[\\/]dist[\\/]apis[\\/]index\.ts/].some(e => e.test(lib))) {
485
+ if (this.apiEntry.some(e => e.test(lib))) {
479
486
  code = apiLoader(code);
480
487
  }
481
488
  if (this.extensions.includes(path__namespace.extname(lib))) {
482
- code = code.replace(/(?:import\s|from\s|require\()['"]([^.][^'"\s]+)['"]\)?/g, (src, p1) => {
489
+ // Note: 查询 externals 内的依赖,并将它们添加到 externalDeps
490
+ code = code.replace(/(?:import\s|from\s|require\()['"]([^\\/.][^'"\s]+)['"]\)?/g, (src, p1) => {
483
491
  const { outputRoot } = this.ctx.runOpts.config;
484
492
  const targetPath = path__namespace.join(outputRoot, helper.NODE_MODULES, p1);
485
493
  const relativePath = parseRelativePath(path__namespace.dirname(target), targetPath);
486
- if (HARMONY_SCOPES.every(e => !e.test(p1))) {
494
+ if (this.harmonyScope.every(e => !e.test(p1))) {
487
495
  if (this.indexOfLibraries(p1) === -1 && !/\.(d\.ts|flow\.js)$/.test(lib)) {
488
496
  this.externalDeps.push([p1, new RegExp(`^${p1.replace(/([-\\/$])/g, '\\$1')}$`)]);
489
497
  this.moveLibraries(p1, targetPath, path__namespace.dirname(lib), true);
@@ -492,7 +500,9 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
492
500
  }
493
501
  return src;
494
502
  });
495
- const define = Object.assign({}, this.defineConstants);
503
+ const define = Object.assign(Object.assign({}, this.defineConstants), {
504
+ // Note: React 开发环境可能调用 stack 可能导致 appWrapper 实例变更
505
+ 'ReactDebugCurrentFrame.getCurrentStack': 'ReactDebugCurrentFrame.getCurrentStack$' });
496
506
  if ([/(@tarojs[\\/]runtime|taro-runtime)[\\/]dist/].some(e => e.test(lib))) {
497
507
  define.global = 'globalThis';
498
508
  }
@@ -501,9 +511,16 @@ let Harmony$1 = class Harmony extends TaroPlatformHarmony {
501
511
  if (['.ts'].includes(ext)) {
502
512
  code = '// @ts-nocheck\n' + code;
503
513
  }
514
+ // 处理嵌套样式的编译,需要针对ReactElement进行props操作,dev模式下会Object.freeze,所以需要在开发模式下注入Object.freeze来覆盖解锁
515
+ // 处理的方法再taro-platform-harmony/src/runtime-ets/dom/cssNesting: ele.props.style = declaration
516
+ if (/react\/jsx-runtime/.test(lib) && process.env.NODE_ENV === 'development') {
517
+ code = 'Object.freeze = (obj) => obj \n' + code;
518
+ }
504
519
  }
505
- if (/tarojs[\\/]taro[\\/]types[\\/]index.d.ts/.test(target)) {
506
- code = `/// <reference path="global.d.ts" />
520
+ // Note: 传入 chorePackagePrefix 时,不生成核心依赖库
521
+ if (!chorePackagePrefix) {
522
+ if (/tarojs[\\/]taro[\\/]types[\\/]index.d.ts/.test(target)) {
523
+ code = `/// <reference path="global.d.ts" />
507
524
 
508
525
  /// <reference path="taro.api.d.ts" />
509
526
  /// <reference path="taro.component.d.ts" />
@@ -523,14 +540,15 @@ declare global {
523
540
  const defineAppConfig: (config: Taro.Config) => Taro.Config
524
541
  const definePageConfig: (config: Taro.Config) => Taro.Config
525
542
  }`;
526
- }
527
- try {
528
- const targetPath = target.replace(new RegExp(`\\b${helper.NODE_MODULES}\\b`), 'npm');
529
- helper.fs.ensureDirSync(path__namespace.dirname(targetPath));
530
- helper.fs.writeFileSync(targetPath, code);
531
- }
532
- catch (e) {
533
- console.error(`[taro-arkts] inject ${lib} to ${target} failed`, e);
543
+ }
544
+ try {
545
+ const targetPath = target.replace(new RegExp(`\\b${helper.NODE_MODULES}\\b`), 'npm');
546
+ helper.fs.ensureDirSync(path__namespace.dirname(targetPath));
547
+ helper.fs.writeFileSync(targetPath, code);
548
+ }
549
+ catch (e) {
550
+ console.error(`[taro-arkts] inject ${lib} to ${target} failed`, e);
551
+ }
534
552
  }
535
553
  }
536
554
  else if (stat.isSymbolicLink()) {
@@ -552,15 +570,15 @@ declare global {
552
570
  const that = this;
553
571
  const { appPath } = that.ctx.paths;
554
572
  const { config } = that.ctx.runOpts;
555
- const { outputRoot } = config;
573
+ const { outputRoot, ohPackage = {}, chorePackagePrefix } = config;
556
574
  if (!that.framework.includes('vue')) {
557
575
  that.excludeLibraries.push(/\bvue\b/);
558
576
  }
559
577
  // @ts-ignore
560
578
  if (that.framework === 'solid') {
561
579
  that.externalDeps.push([
562
- '@tarojs/plugin-framework-react/dist/runtime/reconciler',
563
- /^@tarojs\/plugin-framework-react\/dist\/runtime\/reconciler$/,
580
+ '@tarojs/plugin-framework-react/dist/reconciler',
581
+ /^@tarojs\/plugin-framework-react\/dist\/reconciler$/,
564
582
  path__namespace.join(this.runtimeFrameworkLibrary, 'reconciler')
565
583
  ]);
566
584
  that.externalDeps.push([
@@ -568,11 +586,29 @@ declare global {
568
586
  /^solid-js\/universal$/,
569
587
  ]);
570
588
  }
571
- function modifyResolveId({ source = '', importer = '', options = {}, name = 'modifyResolveId', resolve }) {
572
- if (shared.isFunction(resolve)) {
573
- if (source === that.runtimePath || that.runtimePath.includes(source)) {
574
- return resolve('@tarojs/runtime', importer, options);
575
- }
589
+ const externals = Object.keys(ohPackage.dependencies || []).concat(Object.keys(ohPackage.devDependencies || []));
590
+ function modifyResolveId({ source = '', name = 'modifyResolveId' }) {
591
+ if (externals.includes(source)) {
592
+ return {
593
+ external: true,
594
+ id: source,
595
+ resolvedBy: name,
596
+ };
597
+ }
598
+ else if (source.includes('css_variables')) {
599
+ return {
600
+ external: true,
601
+ id: path__namespace.join(outputRoot, 'css_variables'),
602
+ moduleSideEffects: 'no-treeshake',
603
+ resolvedBy: name,
604
+ };
605
+ }
606
+ if (chorePackagePrefix && that.indexOfLibraries(source) > -1) {
607
+ return {
608
+ external: true,
609
+ id: path__namespace.join(chorePackagePrefix, source),
610
+ resolvedBy: name,
611
+ };
576
612
  }
577
613
  // Note: 映射 Taro 相关依赖到注入 taro 目录
578
614
  if (that.indexOfLibraries(source) > -1) {
@@ -603,19 +639,18 @@ declare global {
603
639
  }
604
640
  function injectLoaderMeta() {
605
641
  return {
606
- name: 'taro:vite-h5-loader-meta',
642
+ name: 'taro:vite-loader-meta',
607
643
  buildStart() {
608
644
  return __awaiter(this, void 0, void 0, function* () {
609
- yield this.load({ id: runnerUtils.VITE_COMPILER_LABEL });
610
- const info = this.getModuleInfo(runnerUtils.VITE_COMPILER_LABEL);
611
- const compiler = info === null || info === void 0 ? void 0 : info.meta.viteCompilerContext;
645
+ const { getViteHarmonyCompilerContext } = that.ctx.runnerUtils;
646
+ const compiler = getViteHarmonyCompilerContext(this);
612
647
  if (compiler) {
613
648
  switch (that.framework) {
614
649
  // @ts-ignore
615
650
  case 'solid':
616
651
  compiler.loaderMeta || (compiler.loaderMeta = {});
617
652
  compiler.loaderMeta.importFrameworkStatement = ``;
618
- compiler.mockAppStatement = `
653
+ compiler.loaderMeta.mockAppStatement = `
619
654
  function App(props) {
620
655
  return null
621
656
  }
@@ -1151,7 +1186,7 @@ class Harmony extends service.TaroPlatformBase {
1151
1186
  const outDir = path.join(compsOutDir, name);
1152
1187
  helper.fs.copy(src, outDir);
1153
1188
  });
1154
- this.modifyHostPackageDep(outDir);
1189
+ this.modifyHostPackage(config.harmony);
1155
1190
  });
1156
1191
  }
1157
1192
  modifyWebpackConfig() {
@@ -1214,13 +1249,13 @@ class Harmony extends service.TaroPlatformBase {
1214
1249
  console.warn(helper.chalk.red('设置鸿蒙 Hap 配置失败:', err));
1215
1250
  });
1216
1251
  }
1217
- modifyHostPackageDep(dest) {
1252
+ modifyHostPackage({ projectPath, hapName = 'entry' }) {
1218
1253
  return __awaiter(this, void 0, void 0, function* () {
1254
+ const packageJsonFile = path.join(projectPath, hapName, 'package.json');
1219
1255
  const hmsDeps = {
1220
1256
  '@hmscore/hms-js-base': '^6.1.0-300',
1221
1257
  '@hmscore/hms-jsb-account': '^1.0.300'
1222
1258
  };
1223
- const packageJsonFile = path.resolve(dest, '../../../../../package.json');
1224
1259
  const isExists = yield helper.fs.pathExists(packageJsonFile);
1225
1260
  if (!isExists)
1226
1261
  return;
@@ -1237,6 +1272,7 @@ class Harmony extends service.TaroPlatformBase {
1237
1272
  }
1238
1273
  packageJson = JSON.stringify(packageJson);
1239
1274
  yield helper.fs.writeFile(packageJsonFile, packageJson);
1275
+ return packageJson;
1240
1276
  });
1241
1277
  }
1242
1278
  getChunkEntryModule(compilation, chunk, compiler = 'webpack4') {
@@ -1305,6 +1341,7 @@ function assertHarmonyConfig(ctx, config) {
1305
1341
  }
1306
1342
  }
1307
1343
 
1344
+ exports.HarmonyOS_ArkTS = Harmony$1;
1308
1345
  exports.HarmonyOS_JSUI = Harmony;
1309
1346
  exports.default = index;
1310
1347
  //# sourceMappingURL=index.js.map