@hyext/builder-revues 1.3.3 → 1.4.0

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.
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ var glob = require('glob');
19
19
  var handlebars = require('handlebars');
20
20
  var tapable = require('tapable');
21
21
  var axios = require('axios');
22
+ var preload = require('@hyext/preload');
22
23
  var liveServer = require('live-server');
23
24
  var archiver = require('archiver');
24
25
  var R = require('ramda');
@@ -625,6 +626,21 @@ const HOST = {
625
626
  // $1是动态的extType
626
627
  function getSDKUrlTemplate(opts) {
627
628
  return `${opts.isTestEnv ? HOST.test : HOST.prod}/sdk/${opts.extType}/${opts.hostId}/${opts.extUuid || 0}/sdk.js`;
629
+ }
630
+ function tryGetDirectSDKUrl(sdkConfig, extType) {
631
+ var _a, _b, _c, _d, _e;
632
+ if (sdkConfig.directSdkUrl && !((_a = sdkConfig.bindSdkInfo) === null || _a === void 0 ? void 0 : _a.existDeliveryRule)) {
633
+ const diliverSdkUrl = (_e = (_d = (_c = (_b = sdkConfig.bindSdkInfo) === null || _b === void 0 ? void 0 : _b.sdkDetail) === null || _c === void 0 ? void 0 : _c.find) === null || _d === void 0 ? void 0 : _d.call(_c, (xs) => xs.extTypeList.includes(extType))) === null || _e === void 0 ? void 0 : _e.sdkUrl;
634
+ if (diliverSdkUrl)
635
+ return diliverSdkUrl;
636
+ }
637
+ return null;
638
+ }
639
+ function getSDKUrl(opts) {
640
+ if (opts.sdkConfig) {
641
+ return tryGetDirectSDKUrl(opts.sdkConfig, opts.extType) || getSDKUrlTemplate(opts);
642
+ }
643
+ return getSDKUrlTemplate(opts);
628
644
  }
629
645
 
630
646
  function isMainPackage(config) {
@@ -693,24 +709,25 @@ function injectNpm(dest, packageName) {
693
709
  }
694
710
  }
695
711
  function genEntrys(props) {
696
- const { builderConfig, mainPakConf, extUuid } = props;
712
+ const { builderConfig, mainPakConf, extUuid, sdkConfig } = props;
697
713
  return builderConfig.supportExtTypes.map(extType => {
698
714
  const entryFilename = `index_${extType}.html`;
699
715
  return {
700
716
  extType,
701
717
  entryPath: 'package/' + mainPakConf.name + '/' + entryFilename,
702
- sdkUrl: getSDKUrlTemplate({
718
+ sdkUrl: getSDKUrl({
703
719
  extType,
704
720
  extUuid,
705
721
  hostId: builderConfig.hostId,
706
- isTestEnv: builderConfig.isTestEnv
722
+ isTestEnv: builderConfig.isTestEnv,
723
+ sdkConfig
707
724
  }),
708
725
  entryFilename
709
726
  };
710
727
  });
711
728
  }
712
729
 
713
- const libVersion = "1.2.0" ;
730
+ const libVersion = "1.3.0" ;
714
731
  const libCdn = '//a.msstatic.com/huya/hd/h5/static-source/revue/lib';
715
732
 
716
733
  function getLibVersion(builderConfig) {
@@ -748,6 +765,21 @@ function checkCdnSourceExist(baseUrl) {
748
765
  });
749
766
  }
750
767
 
768
+ const defualtPreloadConf = {
769
+ firstScreen: {
770
+ mode: 'loading',
771
+ }
772
+ };
773
+ function resolvePreloadCodeByProject(opts) {
774
+ const staticPath = path__default["default"].join(opts.projectPath, 'static');
775
+ return preload.resolvePreloadCodeByExtType({
776
+ // @ts-ignore
777
+ extInfo: opts.extInfo,
778
+ preloadEntry: opts.builderConfig.preload || defualtPreloadConf,
779
+ staticDir: fs__default["default"].existsSync(staticPath) ? staticPath : undefined
780
+ });
781
+ }
782
+
751
783
  // TODO: 改异步
752
784
  // 合并游戏分包到主包
753
785
  function mergeGamePackage(releasePath, opts) {
@@ -757,7 +789,8 @@ function mergeGamePackage(releasePath, opts) {
757
789
  const entrys = genEntrys({
758
790
  builderConfig,
759
791
  mainPakConf,
760
- extUuid: opts.extInfo.extUuid
792
+ extUuid: opts.extInfo.extUuid,
793
+ sdkConfig: opts.sdkConfig
761
794
  });
762
795
  PluginDriver.hooks.onMergedMainPackge.call({
763
796
  mainConf: mainPakConf,
@@ -783,7 +816,7 @@ function renderGame(opts) {
783
816
  // mark 热更新 整个函数不会重渲染。
784
817
  function renderGameTemplate(opts) {
785
818
  return __awaiter(this, void 0, void 0, function* () {
786
- const { releasePath, mainPath, entrys, debug, dev, extInfo, builderConfig } = opts;
819
+ const { releasePath, mainPath, entrys, debug, dev, extInfo, builderConfig, inputPath } = opts;
787
820
  const templatePath = path__default["default"].join(staticPath, 'template');
788
821
  const sourcePathPrefix = yield getLibUrl(builderConfig, path__default["default"].relative(mainPath, releasePath));
789
822
  const renderConfigList = [
@@ -806,19 +839,15 @@ function renderGameTemplate(opts) {
806
839
  });
807
840
  }
808
841
  const entryRenderConfList = entrys.map(info => {
842
+ const finalExtInfo = Object.assign(Object.assign({}, extInfo), { envVersion: dev ? 'develop' : 'release', extType: info.extType });
809
843
  return {
810
844
  input: path__default["default"].join(templatePath, 'minigame-page-manager.hbs'),
811
845
  output: path__default["default"].join(mainPath, info.entryFilename),
812
- data: {
813
- sourcePathPrefix,
814
- hyextSDKUrl: info.sdkUrl,
815
- debug,
816
- sentryScript: dev ? undefined : sentryScriptUrl,
817
- buildEnv: buildEnv,
818
- extInfo: Object.assign(Object.assign({}, extInfo), { envVersion: dev ? 'develop' : 'release', extType: info.extType }),
819
- deviceOrientation: PluginDriver.context.deviceOrientation,
820
- builderConfig: builderConfig
821
- }
846
+ data: Object.assign({ sourcePathPrefix, hyextSDKUrl: info.sdkUrl, debug, sentryScript: dev ? undefined : sentryScriptUrl, buildEnv: buildEnv, extInfo: finalExtInfo, deviceOrientation: PluginDriver.context.deviceOrientation, builderConfig: builderConfig }, resolvePreloadCodeByProject({
847
+ builderConfig,
848
+ extInfo: finalExtInfo,
849
+ projectPath: inputPath
850
+ }))
822
851
  };
823
852
  });
824
853
  entryRenderConfList.concat(renderConfigList).forEach(config => {
@@ -870,7 +899,8 @@ function mergeMiniprogramPackage(releasePath, opts) {
870
899
  const entrys = genEntrys({
871
900
  builderConfig,
872
901
  mainPakConf,
873
- extUuid: opts.extInfo.extUuid
902
+ extUuid: opts.extInfo.extUuid,
903
+ sdkConfig: opts.sdkConfig
874
904
  });
875
905
  PluginDriver.hooks.onMergedMainPackge.call({
876
906
  mainConf: mainPakConf,
@@ -878,7 +908,12 @@ function mergeMiniprogramPackage(releasePath, opts) {
878
908
  compileType: COMPILE_TYPE.miniProgram,
879
909
  extInfo: opts.extInfo
880
910
  });
881
- return { entrys, mainPublicPath: 'package/' + mainPakConf.name, mainPath, packagePath };
911
+ return {
912
+ entrys,
913
+ mainPublicPath: 'package/' + mainPakConf.name,
914
+ mainPath,
915
+ packagePath
916
+ };
882
917
  }
883
918
  function renderMiniProgram(opts) {
884
919
  return __awaiter(this, void 0, void 0, function* () {
@@ -892,7 +927,7 @@ function rerenderHTML(opts) {
892
927
  }
893
928
  function renderMiniprogramTemplate(opts) {
894
929
  return __awaiter(this, void 0, void 0, function* () {
895
- const { packagePath, releasePath, mainPath, entrys, debug, dev, extInfo, builderConfig } = opts;
930
+ const { packagePath, releasePath, inputPath, mainPath, entrys, debug, dev, extInfo, builderConfig } = opts;
896
931
  const extConfig = getPackageExtConfig(packagePath);
897
932
  const sourcePathPrefix = yield getLibUrl(builderConfig, path__default["default"].relative(mainPath, releasePath));
898
933
  const packageExtConfigStr = JSON.stringify(extConfig);
@@ -912,9 +947,7 @@ function renderMiniprogramTemplate(opts) {
912
947
  }
913
948
  }
914
949
  ];
915
- const renderConfigList = [
916
- ...htmlRenderConfigList
917
- ];
950
+ const renderConfigList = [...htmlRenderConfigList];
918
951
  if (dev) {
919
952
  renderConfigList.push({
920
953
  input: path__default["default"].join(templatePath, 'remote-debugger.hbs'),
@@ -926,21 +959,17 @@ function renderMiniprogramTemplate(opts) {
926
959
  });
927
960
  }
928
961
  const entryRenderConfList = entrys.map(info => {
962
+ const finalExtInfo = Object.assign(Object.assign({}, extInfo), { envVersion: dev ? 'develop' : 'release', version: '', extType: info.extType });
929
963
  return {
930
964
  input: path__default["default"].join(templatePath, 'miniapp-page-manager.hbs'),
931
965
  output: path__default["default"].join(mainPath, info.entryFilename),
932
- data: {
933
- sourcePathPrefix,
934
- packageExtConfig: packageExtConfigStr,
935
- hyextSDKUrl: info.sdkUrl,
936
- debug,
937
- buildEnv: buildEnv,
938
- isProd: buildEnv != 'dev',
966
+ data: Object.assign({ sourcePathPrefix, packageExtConfig: packageExtConfigStr, hyextSDKUrl: info.sdkUrl, debug, buildEnv: buildEnv, isProd: buildEnv != 'dev',
939
967
  // sentryScript: dev ? undefined : sentryScriptUrl,
940
- sentryScript: sentryScriptUrl,
941
- extInfo: Object.assign(Object.assign({}, extInfo), { envVersion: dev ? 'develop' : 'release', version: '', extType: info.extType }),
942
- builderConfig
943
- }
968
+ sentryScript: sentryScriptUrl, extInfo: finalExtInfo, builderConfig }, resolvePreloadCodeByProject({
969
+ builderConfig,
970
+ extInfo: finalExtInfo,
971
+ projectPath: inputPath
972
+ }))
944
973
  };
945
974
  });
946
975
  entryRenderConfList.concat(renderConfigList).forEach(config => {
@@ -952,12 +981,13 @@ function renderMiniprogramTemplate(opts) {
952
981
  });
953
982
  }
954
983
 
955
- function mergePackages(projectConfig, outputPath, opts) {
984
+ function mergePackages(projectConfig, inputPath, outputPath, opts) {
956
985
  return __awaiter(this, void 0, void 0, function* () {
957
986
  const baseRenderOpts = {
958
987
  packagePath: '',
959
988
  mainPath: '',
960
989
  releasePath: outputPath,
990
+ inputPath,
961
991
  entrys: [],
962
992
  extInfo: opts.extInfo,
963
993
  debug: opts.debug,
@@ -996,7 +1026,6 @@ function injectRuntimeLib(releasePath) {
996
1026
  const releaseFrameworkPath = path__default["default"].join(releasePath, 'framework');
997
1027
  fs__default["default"].copySync(frameworkPath, releaseFrameworkPath);
998
1028
  injectNpm(path__default["default"].join(releaseFrameworkPath, 'script'), '@revues/web-sdk-core');
999
- injectNpm(path__default["default"].join(releaseFrameworkPath, 'script'), '@revues/web-frame');
1000
1029
  // TODO: 这段代码是测试 @revues/js-sdk 增加构建变量去决定执行
1001
1030
  // injectNpm(sdkPath, '@revues/js-sdk')
1002
1031
  }
@@ -1067,33 +1096,6 @@ function compress(output) {
1067
1096
  });
1068
1097
  }
1069
1098
 
1070
- function urlToBase64(url) {
1071
- return __awaiter(this, void 0, void 0, function* () {
1072
- try {
1073
- const res = yield axios__default["default"].get(url, { responseType: 'arraybuffer' });
1074
- const buffer = Buffer.from(res.data);
1075
- const info = getFileInfoByUrl(url);
1076
- return `data:image/${info.ext};base64,` + `${buffer.toString('base64')}`;
1077
- }
1078
- catch (e) {
1079
- throw new Error(`urlToBase64 failed, url is "${url}", error msg is ${e.message}`);
1080
- }
1081
- });
1082
- }
1083
- function getFileInfoByUrl(url) {
1084
- var _a;
1085
- const main = url.split('?')[0];
1086
- const arr = main.split('/');
1087
- const [filename, ext] = (_a = arr[arr.length - 1]) === null || _a === void 0 ? void 0 : _a.split('.');
1088
- if (ext == null || ext == '') {
1089
- throw new Error(`url:${url}格式错误,无法获取文件信息`);
1090
- }
1091
- return {
1092
- filename,
1093
- ext
1094
- };
1095
- }
1096
-
1097
1099
  // 36PX
1098
1100
  function makeBuildResults(mode, opts) {
1099
1101
  return __awaiter(this, void 0, void 0, function* () {
@@ -1269,12 +1271,13 @@ class RevueBuilder {
1269
1271
  // 这里拿到打包好的代码 原样输出 + build result
1270
1272
  build(opts) {
1271
1273
  return __awaiter(this, void 0, void 0, function* () {
1272
- const { inputPath, outputPath, publicPath, projectConfig, config, extUuid, extName, extVersion, extVersionId, extLogo } = opts;
1274
+ const { inputPath, outputPath, publicPath, projectConfig, config, extUuid, extName, extVersion, extVersionId, extLogo, directSdkUrl, bindSdkInfo } = opts;
1275
+ const hasDirectSDKConfig = bindSdkInfo && directSdkUrl;
1273
1276
  const processedConfig = processBuilderConfigJSON('production', config);
1274
1277
  fs__default["default"].existsSync(outputPath) && fs__default["default"].removeSync(outputPath);
1275
1278
  // 把 inputPath 的文件 迁移到 outputPath
1276
1279
  yield fs__default["default"].copy(inputPath, outputPath, { overwrite: true });
1277
- const { entrys } = yield mergePackages(projectConfig, outputPath, {
1280
+ const { entrys } = yield mergePackages(projectConfig, inputPath, outputPath, {
1278
1281
  builderConfig: processedConfig,
1279
1282
  extInfo: {
1280
1283
  forceUsePatchApi: projectConfig.forceUsePatchApi,
@@ -1284,8 +1287,12 @@ class RevueBuilder {
1284
1287
  extName,
1285
1288
  extVersion,
1286
1289
  extVersionId,
1287
- extLogo: yield urlToBase64(extLogo)
1288
- }
1290
+ extLogo: extLogo
1291
+ },
1292
+ sdkConfig: hasDirectSDKConfig ? {
1293
+ bindSdkInfo,
1294
+ directSdkUrl
1295
+ } : undefined
1289
1296
  });
1290
1297
  return yield makeBuildResults('production', {
1291
1298
  entrys: entrys,
@@ -1324,7 +1331,7 @@ class RevueBuilder {
1324
1331
  retryRef(true);
1325
1332
  }
1326
1333
  });
1327
- const { entrys, mainPublicPath, retry } = yield mergePackages(projectConfig, outputPath, {
1334
+ const { entrys, mainPublicPath, retry } = yield mergePackages(projectConfig, inputPath, outputPath, {
1328
1335
  builderConfig: processedConfig,
1329
1336
  extInfo,
1330
1337
  debug: debugWsc,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyext/builder-revues",
3
- "version": "1.3.3",
3
+ "version": "1.4.0",
4
4
  "description": "> TODO: description",
5
5
  "author": "loler",
6
6
  "homepage": "",
@@ -24,10 +24,10 @@
24
24
  "url": "https://git.huya.com/exc/web/revue.git"
25
25
  },
26
26
  "dependencies": {
27
- "@revues/cocos-web-adapter": "1.3.3",
28
- "@revues/code-compiler": "1.3.3",
29
- "@revues/web-frame": "1.3.3",
30
- "@revues/web-sdk-core": "1.3.3",
27
+ "@hyext/preload": "^1.1.3",
28
+ "@revues/cocos-web-adapter": "1.4.0",
29
+ "@revues/code-compiler": "1.4.0",
30
+ "@revues/web-sdk-core": "1.4.0",
31
31
  "archiver": "^7.0.1",
32
32
  "axios": "^1.7.3",
33
33
  "chalk": "^2.4.2",
@@ -47,5 +47,5 @@
47
47
  "@types/ramda": "^0.29.11",
48
48
  "terser": "^5.31.0"
49
49
  },
50
- "gitHead": "c3a925d35fe691af5bcd01e35985e17d7878abd8"
50
+ "gitHead": "1d19521460b8377316d5e179c6d889ca85a65fbe"
51
51
  }
@@ -16,8 +16,7 @@
16
16
  <meta name="ext-busi-type" content="ext">
17
17
  <meta name="ext-build-env" content="{{buildEnv}}">
18
18
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
19
- <link rel="stylesheet" href="{{sourcePathPrefix}}/framework/script/web-frame.css"></link>
20
- <script charset="utf-8" src="{{sourcePathPrefix}}/framework/script/web-frame.js"></script>
19
+ {{headerContent}}
21
20
  <style>
22
21
  html,
23
22
  body {
@@ -66,6 +65,11 @@
66
65
  box-sizing: border-box;
67
66
  }
68
67
  </style>
68
+ <link rel="preload" href="{{sourcePathPrefix}}/framework/script/service.js" as="script" onload="__handleLinkLoad()">
69
+ <link rel="preload" href="{{sourcePathPrefix}}/framework/script/view.js" as="script" onload="__handleLinkLoad()">
70
+ <link rel="preload" href="{{sourcePathPrefix}}/framework/css/index.css" as="style" onload="__handleLinkLoad()">
71
+ <link rel="preload" href="./__APP__.js" as="script" onload="__handleLinkLoad()">
72
+ <link rel="preload" href="./pageframe.js" as="script" onload="__handleLinkLoad()">
69
73
  <script charset="utf-8">
70
74
  (function () {
71
75
  window.__extInfo = {{ toJSON extInfo }}
@@ -92,24 +96,20 @@
92
96
  window.__debug = true
93
97
  </script>
94
98
  {{/if}}
95
- {{#if isProd}}
96
- <script src="https://fedlib.msstatic.com/fedbasic/hyext-inner/hyext-performance/performance.global.js"></script>
97
- <script src="https://a.msstatic.com/huya/hd/cdn_libs/performance_report-min.js"></script>
98
- {{/if}}
99
- <script charset="utf-8" src="{{hyextSDKUrl}}"></script>
100
- <script charset="utf-8" src="{{sourcePathPrefix}}/framework/script/web-sdk-core.js"></script>
101
99
  </head>
102
100
 
103
101
  <body>
102
+ {{bodyContent}}
104
103
  <div class="views" id="webview-container">
105
104
  <iframe class="service" id="webview-service"></iframe>
106
105
  <iframe class="webview" frameborder="0" id="webview-first-view"></iframe>
107
106
  </div>
108
- <link rel="preload" href="{{sourcePathPrefix}}/framework/script/service.js" as="script" onload="__handleLinkLoad()">
109
- <link rel="preload" href="{{sourcePathPrefix}}/framework/script/view.js" as="script" onload="__handleLinkLoad()">
110
- <link rel="preload" href="{{sourcePathPrefix}}/framework/css/index.css" as="style" onload="__handleLinkLoad()">
111
- <link rel="preload" href="./__APP__.js" as="script" onload="__handleLinkLoad()">
112
- <link rel="preload" href="./pageframe.js" as="script" onload="__handleLinkLoad()">
107
+ {{#if isProd}}
108
+ <script src="https://fedlib.msstatic.com/fedbasic/hyext-inner/hyext-performance/performance.global.js"></script>
109
+ <script src="https://a.msstatic.com/huya/hd/cdn_libs/performance_report-min.js"></script>
110
+ {{/if}}
111
+ <script charset="utf-8" src="{{hyextSDKUrl}}"></script>
112
+ <script charset="utf-8" src="{{sourcePathPrefix}}/framework/script/web-sdk-core.js"></script>
113
113
  {{#if sentryScript}}
114
114
  <script charset="utf-8" src="{{sentryScript}}" defer></script>
115
115
  {{/if}}
@@ -17,6 +17,7 @@
17
17
  {{/if}}
18
18
  <meta name="ext-busi-type" content="game">
19
19
  <meta name="ext-build-env" content="{{buildEnv}}">
20
+ {{headerContent}}
20
21
  <style>
21
22
  .service,
22
23
  .service-preload,
@@ -74,13 +75,12 @@
74
75
  window.__debug = true
75
76
  </script>
76
77
  {{/if}}
77
- <link rel="stylesheet" href="{{sourcePathPrefix}}/framework/script/web-frame.css"></link>
78
- <script charset="utf-8" src="{{sourcePathPrefix}}/framework/script/web-frame.js"></script>
79
78
  <script charset="utf-8" src="{{hyextSDKUrl}}"></script>
80
79
  <script charset="utf-8" src="{{sourcePathPrefix}}/framework/script/web-sdk-core.js"></script>
81
80
  </head>
82
81
 
83
82
  <body>
83
+ {{bodyContent}}
84
84
  <div class="views" id="webview-container">
85
85
  <iframe class="service service-view" id="webview-service" src="./game-frame.html"></iframe>
86
86
  </div>