ttmg-pack 0.4.8 → 0.4.9

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/CHANGELOG.md CHANGED
@@ -405,4 +405,7 @@ for unity plugin
405
405
  ## 0.4.7
406
406
  wasm 不校验必接能力,避免误提示
407
407
  ## 0.4.8
408
- packConfig 扩展 __engine_meta__ 字段,用于后续 C 端数据分析使用
408
+ packConfig 扩展 __engine_meta__ 字段,用于后续 C 端数据分析使用
409
+
410
+ ## 0.4.9
411
+ 支持子包收集优化需求
@@ -0,0 +1,20 @@
1
+ {
2
+ "gameEngine": "unity",
3
+ "parallelPreloadSubpackages": [
4
+ { "subPkgName": "sub1", "is_startup": true, "size": "100KB" }
5
+ ],
6
+ "subpackages": [
7
+ {
8
+ "name": "sub1",
9
+ "root": "subpackages/sub1"
10
+ },
11
+ {
12
+ "name": "sub2",
13
+ "root": "subpackages/sub2",
14
+ "independent": true,
15
+ "parallelPreloadSubpackages": [
16
+ { "subPkgName": "sub1", "is_startup": false, "size": "100KB" }
17
+ ]
18
+ }
19
+ ]
20
+ }
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * ==========================================
3
3
  * @Description: ttmg pack
4
- * @Version: 0.4.8
4
+ * @Version: 0.4.9
5
5
  * @Author: zhanghongyang.mocha
6
- * @Date: 2026-04-09 16:30:51
6
+ * @Date: 2026-06-04 17:34:30
7
7
  * ==========================================
8
8
  */
9
9
  'use strict';
@@ -1753,6 +1753,9 @@ async function checkPkgs(config, context = {}) {
1753
1753
  ];
1754
1754
  }
1755
1755
 
1756
+ function isNonEmptyArray(value) {
1757
+ return Array.isArray(value) && value.length > 0;
1758
+ }
1756
1759
  async function setup(config) {
1757
1760
  const t = getPackTranslator();
1758
1761
  const { entry: entryDir, output: outputDir } = config;
@@ -1786,7 +1789,13 @@ async function setup(config) {
1786
1789
  type: 'game',
1787
1790
  dependencies: []
1788
1791
  };
1789
- transformSubPackages(gameJson.subpackages).forEach(({ name, root, main, independent }) => {
1792
+ // 启动并行预下载配置同构透传:源码主包写在 game.json 顶层,
1793
+ // 编译产物挂到主包 __GAME__ 条目,保证运行时消费的编译产物与线下采集一致。
1794
+ if (isNonEmptyArray(gameJson.parallelPreloadSubpackages)) {
1795
+ packages[GAME_MAIN_PACKAGE_NAME].parallelPreloadSubpackages =
1796
+ gameJson.parallelPreloadSubpackages;
1797
+ }
1798
+ transformSubPackages(gameJson.subpackages).forEach(({ name, root, main, independent, parallelPreloadSubpackages }) => {
1790
1799
  // root 是目录
1791
1800
  packages[name] = {
1792
1801
  url: '',
@@ -1798,6 +1807,16 @@ async function setup(config) {
1798
1807
  type: 'game',
1799
1808
  dependencies: []
1800
1809
  };
1810
+ // 启动并行预下载配置 normalize:仅合法启动 root 允许携带该字段。
1811
+ // 独立分包是合法启动入口 -> 同构挂到对应 packages[name] 条目;
1812
+ // 普通分包不是启动 root,源码侧禁止配置,编译期直接拒绝
1813
+ // (防止 DevTool CLI 写入前校验被绕过的非法 game.json 流入产物)。
1814
+ if (isNonEmptyArray(parallelPreloadSubpackages)) {
1815
+ if (!independent) {
1816
+ throw new Error(`普通分包 ${name} 不是合法启动 root,不允许配置 parallelPreloadSubpackages`);
1817
+ }
1818
+ packages[name].parallelPreloadSubpackages = parallelPreloadSubpackages;
1819
+ }
1801
1820
  if (independent) {
1802
1821
  fyfPackages.push({
1803
1822
  value: name,
@@ -1849,7 +1868,13 @@ function transformSubPackages(configs) {
1849
1868
  let main = getMainFromRoot(config.root);
1850
1869
  // test
1851
1870
  let root = normalizeRoot(config.root);
1852
- return { main, root, name, independent: config.independent || false };
1871
+ return {
1872
+ main,
1873
+ root,
1874
+ name,
1875
+ independent: config.independent || false,
1876
+ parallelPreloadSubpackages: config.parallelPreloadSubpackages,
1877
+ };
1853
1878
  });
1854
1879
  }
1855
1880
 
@@ -2563,7 +2588,7 @@ async function buildPkgs(config, context = {}) {
2563
2588
  let startTime = Date.now();
2564
2589
  logger.init(outputDir, true);
2565
2590
  logger.info(t('log.build.version', {
2566
- version: "0.4.8",
2591
+ version: "0.4.9",
2567
2592
  }));
2568
2593
  logger.info(t('log.build.start', { startTime }));
2569
2594
  /**