@bm-fe/react-native-multi-bundle 1.0.0-beta.10 → 1.0.0-beta.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bm-fe/react-native-multi-bundle",
3
- "version": "1.0.0-beta.10",
3
+ "version": "1.0.0-beta.11",
4
4
  "description": "React Native 多 Bundle 系统 - 支持模块按需加载和独立更新",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -218,7 +218,7 @@ function ensureOutputDir(platform) {
218
218
  /**
219
219
  * 构建单个 bundle
220
220
  */
221
- function buildBundle(entryFile, outputFile, platform, env = 'development', progressInfo = null) {
221
+ function buildBundle(entryFile, outputFile, platform, env = 'development', assetsDestDir = null, enableSourcemap = false, progressInfo = null) {
222
222
  const isProduction = env === 'production';
223
223
  const dev = !isProduction;
224
224
  const startTime = Date.now();
@@ -237,9 +237,9 @@ function buildBundle(entryFile, outputFile, platform, env = 'development', progr
237
237
  // ⭐ 关键:判断是否是模块 bundle(通过检查 entry 路径)
238
238
  const isModuleBundle = entry.includes('src/modules/');
239
239
 
240
- // 计算 assets 输出目录(统一放在平台目录下的 assets 文件夹)
241
- const platformDir = path.dirname(outputFile);
242
- const assetsDest = path.join(platformDir, 'assets');
240
+ // 使用统一的 assets 目录(所有 bundle 共享同一个 assets 目录)
241
+ // 如果未指定,则使用平台目录下的 assets 文件夹
242
+ const assetsDest = assetsDestDir || path.join(path.dirname(outputFile), 'assets');
243
243
  const assetsDestRelative = path.relative(PROJECT_ROOT, assetsDest);
244
244
 
245
245
  // 确保 assets 目录存在
@@ -260,8 +260,8 @@ function buildBundle(entryFile, outputFile, platform, env = 'development', progr
260
260
  '--reset-cache',
261
261
  ];
262
262
 
263
- // 生产环境添加 sourcemap 输出
264
- if (isProduction) {
263
+ // 如果启用了 sourcemap,添加 sourcemap 输出
264
+ if (enableSourcemap) {
265
265
  const sourcemapOutput = `${out}.map`;
266
266
  commandParts.push(`--sourcemap-output ${sourcemapOutput}`);
267
267
  }
@@ -415,16 +415,19 @@ function printBuildSummary(results, platform, env, totalDuration) {
415
415
  /**
416
416
  * 主构建函数
417
417
  */
418
- function buildMultiBundle(platform, env = 'development') {
418
+ function buildMultiBundle(platform, env = 'development', enableSourcemap = false) {
419
419
  const startTime = Date.now();
420
420
 
421
421
  // 构建开始日志
422
422
  console.log('\n' + bold('🚀 Building Multi-Bundle'));
423
- console.log(`${bold('Platform:')} ${blue(platform)} | ${bold('Environment:')} ${yellow(env)}\n`);
423
+ console.log(`${bold('Platform:')} ${blue(platform)} | ${bold('Environment:')} ${yellow(env)} | ${bold('Sourcemap:')} ${enableSourcemap ? green('enabled') : gray('disabled')}\n`);
424
424
 
425
425
  const config = loadMultiBundleConfig();
426
426
  const outputDir = ensureOutputDir(platform);
427
427
 
428
+ // 计算统一的 assets 目录(所有 bundle 共享)
429
+ const sharedAssetsDir = path.join(outputDir, 'assets');
430
+
428
431
  const results = [];
429
432
  const totalBundles = 1 + config.modules.length; // main + modules
430
433
  let currentIndex = 0;
@@ -439,6 +442,8 @@ function buildMultiBundle(platform, env = 'development') {
439
442
  mainOutput,
440
443
  platform,
441
444
  env,
445
+ sharedAssetsDir, // 传递统一的 assets 目录
446
+ enableSourcemap, // 传递 sourcemap 配置
442
447
  { current: currentIndex, total: totalBundles, name: mainFileName }
443
448
  );
444
449
  results.push(mainResult);
@@ -454,6 +459,8 @@ function buildMultiBundle(platform, env = 'development') {
454
459
  moduleOutput,
455
460
  platform,
456
461
  env,
462
+ sharedAssetsDir, // 所有模块 bundle 也使用同一个 assets 目录
463
+ enableSourcemap, // 所有模块 bundle 也使用相同的 sourcemap 配置
457
464
  { current: currentIndex, total: totalBundles, name: moduleFileName }
458
465
  );
459
466
  results.push(moduleResult);
@@ -485,6 +492,14 @@ function main() {
485
492
  env = args[envIndex + 1];
486
493
  }
487
494
 
495
+ // 解析 sourcemap 参数(默认关闭)
496
+ let enableSourcemap = false;
497
+ if (args.includes('--sourcemap')) {
498
+ enableSourcemap = true;
499
+ } else if (args.includes('--no-sourcemap')) {
500
+ enableSourcemap = false;
501
+ }
502
+
488
503
  // 验证平台参数
489
504
  if (!['ios', 'android'].includes(platform)) {
490
505
  console.error(`\n${red('✗')} ${red(bold('Invalid platform'))}`);
@@ -501,7 +516,7 @@ function main() {
501
516
  }
502
517
 
503
518
  try {
504
- buildMultiBundle(platform, env);
519
+ buildMultiBundle(platform, env, enableSourcemap);
505
520
  } catch (error) {
506
521
  console.error(`\n${red('✗')} ${red(bold('Build failed'))}`);
507
522
  if (error.message) {