@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
|
@@ -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
|
-
//
|
|
241
|
-
|
|
242
|
-
const assetsDest = path.join(
|
|
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
|
-
//
|
|
264
|
-
if (
|
|
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) {
|