@vercel/microfrontends 2.2.0 → 2.2.1
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 +6 -0
- package/dist/bin/cli.cjs +107 -26
- package/dist/experimental/sveltekit.cjs +83 -1
- package/dist/experimental/sveltekit.cjs.map +1 -1
- package/dist/experimental/sveltekit.js +83 -1
- package/dist/experimental/sveltekit.js.map +1 -1
- package/dist/experimental/vite.cjs +105 -25
- package/dist/experimental/vite.cjs.map +1 -1
- package/dist/experimental/vite.js +105 -25
- package/dist/experimental/vite.js.map +1 -1
- package/dist/microfrontends/server.cjs +105 -25
- package/dist/microfrontends/server.cjs.map +1 -1
- package/dist/microfrontends/server.js +105 -25
- package/dist/microfrontends/server.js.map +1 -1
- package/dist/microfrontends/utils.cjs +47 -4
- package/dist/microfrontends/utils.cjs.map +1 -1
- package/dist/microfrontends/utils.js +47 -4
- package/dist/microfrontends/utils.js.map +1 -1
- package/dist/next/config.cjs +83 -1
- package/dist/next/config.cjs.map +1 -1
- package/dist/next/config.js +83 -1
- package/dist/next/config.js.map +1 -1
- package/dist/utils/mfe-port.cjs +105 -25
- package/dist/utils/mfe-port.cjs.map +1 -1
- package/dist/utils/mfe-port.js +105 -25
- package/dist/utils/mfe-port.js.map +1 -1
- package/package.json +1 -1
|
@@ -187,6 +187,28 @@ import { readFileSync } from "node:fs";
|
|
|
187
187
|
import { parse } from "jsonc-parser";
|
|
188
188
|
import fg from "fast-glob";
|
|
189
189
|
|
|
190
|
+
// src/bin/logger.ts
|
|
191
|
+
function debug(...args) {
|
|
192
|
+
if (process.env.MFE_DEBUG) {
|
|
193
|
+
console.log(...args);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function info(...args) {
|
|
197
|
+
console.log(...args);
|
|
198
|
+
}
|
|
199
|
+
function warn(...args) {
|
|
200
|
+
console.warn(...args);
|
|
201
|
+
}
|
|
202
|
+
function error(...args) {
|
|
203
|
+
console.error(...args);
|
|
204
|
+
}
|
|
205
|
+
var logger = {
|
|
206
|
+
debug,
|
|
207
|
+
info,
|
|
208
|
+
warn,
|
|
209
|
+
error
|
|
210
|
+
};
|
|
211
|
+
|
|
190
212
|
// src/config/microfrontends/utils/get-config-file-name.ts
|
|
191
213
|
var DEFAULT_CONFIGURATION_FILENAMES = [
|
|
192
214
|
"microfrontends.json",
|
|
@@ -216,6 +238,10 @@ function findPackageWithMicrofrontendsConfig({
|
|
|
216
238
|
customConfigFilename
|
|
217
239
|
}) {
|
|
218
240
|
const applicationName = applicationContext.name;
|
|
241
|
+
logger.debug(
|
|
242
|
+
"[MFE Config] Searching repository for configs containing application:",
|
|
243
|
+
applicationName
|
|
244
|
+
);
|
|
219
245
|
try {
|
|
220
246
|
const microfrontendsJsonPaths = fg.globSync(
|
|
221
247
|
`**/{${getPossibleConfigurationFilenames({ customConfigFilename }).join(",")}}`,
|
|
@@ -227,6 +253,11 @@ function findPackageWithMicrofrontendsConfig({
|
|
|
227
253
|
ignore: ["**/node_modules/**", "**/.git/**"]
|
|
228
254
|
}
|
|
229
255
|
);
|
|
256
|
+
logger.debug(
|
|
257
|
+
"[MFE Config] Found",
|
|
258
|
+
microfrontendsJsonPaths.length,
|
|
259
|
+
"config file(s) in repository"
|
|
260
|
+
);
|
|
230
261
|
const matchingPaths = [];
|
|
231
262
|
for (const microfrontendsJsonPath of microfrontendsJsonPaths) {
|
|
232
263
|
try {
|
|
@@ -236,12 +267,20 @@ function findPackageWithMicrofrontendsConfig({
|
|
|
236
267
|
);
|
|
237
268
|
const microfrontendsJson = parse(microfrontendsJsonContent);
|
|
238
269
|
if (microfrontendsJson.applications[applicationName]) {
|
|
270
|
+
logger.debug(
|
|
271
|
+
"[MFE Config] Found application in config:",
|
|
272
|
+
microfrontendsJsonPath
|
|
273
|
+
);
|
|
239
274
|
matchingPaths.push(microfrontendsJsonPath);
|
|
240
275
|
} else {
|
|
241
276
|
for (const [_, app] of Object.entries(
|
|
242
277
|
microfrontendsJson.applications
|
|
243
278
|
)) {
|
|
244
279
|
if (app.packageName === applicationName) {
|
|
280
|
+
logger.debug(
|
|
281
|
+
"[MFE Config] Found application via packageName in config:",
|
|
282
|
+
microfrontendsJsonPath
|
|
283
|
+
);
|
|
245
284
|
matchingPaths.push(microfrontendsJsonPath);
|
|
246
285
|
}
|
|
247
286
|
}
|
|
@@ -249,6 +288,10 @@ function findPackageWithMicrofrontendsConfig({
|
|
|
249
288
|
} catch (error2) {
|
|
250
289
|
}
|
|
251
290
|
}
|
|
291
|
+
logger.debug(
|
|
292
|
+
"[MFE Config] Total matching config files:",
|
|
293
|
+
matchingPaths.length
|
|
294
|
+
);
|
|
252
295
|
if (matchingPaths.length > 1) {
|
|
253
296
|
throw new MicrofrontendError(
|
|
254
297
|
`Found multiple \`microfrontends.json\` files in the repository referencing the application "${applicationName}", but only one is allowed.
|
|
@@ -308,30 +351,6 @@ function inferMicrofrontendsLocation(opts) {
|
|
|
308
351
|
// src/config/microfrontends/utils/is-monorepo.ts
|
|
309
352
|
import fs2 from "node:fs";
|
|
310
353
|
import path2 from "node:path";
|
|
311
|
-
|
|
312
|
-
// src/bin/logger.ts
|
|
313
|
-
function debug(...args) {
|
|
314
|
-
if (process.env.MFE_DEBUG) {
|
|
315
|
-
console.log(...args);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
function info(...args) {
|
|
319
|
-
console.log(...args);
|
|
320
|
-
}
|
|
321
|
-
function warn(...args) {
|
|
322
|
-
console.warn(...args);
|
|
323
|
-
}
|
|
324
|
-
function error(...args) {
|
|
325
|
-
console.error(...args);
|
|
326
|
-
}
|
|
327
|
-
var logger = {
|
|
328
|
-
debug,
|
|
329
|
-
info,
|
|
330
|
-
warn,
|
|
331
|
-
error
|
|
332
|
-
};
|
|
333
|
-
|
|
334
|
-
// src/config/microfrontends/utils/is-monorepo.ts
|
|
335
354
|
function isMonorepo({
|
|
336
355
|
repositoryRoot
|
|
337
356
|
}) {
|
|
@@ -1071,15 +1090,18 @@ import fs5 from "node:fs";
|
|
|
1071
1090
|
import path4 from "node:path";
|
|
1072
1091
|
function getApplicationContext(opts) {
|
|
1073
1092
|
if (opts?.appName) {
|
|
1093
|
+
logger.debug("[MFE Config] Application name from appName parameter:", opts.appName);
|
|
1074
1094
|
return { name: opts.appName };
|
|
1075
1095
|
}
|
|
1076
1096
|
if (process.env.VERCEL_PROJECT_NAME) {
|
|
1097
|
+
logger.debug("[MFE Config] Application name from VERCEL_PROJECT_NAME:", process.env.VERCEL_PROJECT_NAME);
|
|
1077
1098
|
return {
|
|
1078
1099
|
name: process.env.VERCEL_PROJECT_NAME,
|
|
1079
1100
|
projectName: process.env.VERCEL_PROJECT_NAME
|
|
1080
1101
|
};
|
|
1081
1102
|
}
|
|
1082
1103
|
if (process.env.NX_TASK_TARGET_PROJECT) {
|
|
1104
|
+
logger.debug("[MFE Config] Application name from NX_TASK_TARGET_PROJECT:", process.env.NX_TASK_TARGET_PROJECT);
|
|
1083
1105
|
return {
|
|
1084
1106
|
name: process.env.NX_TASK_TARGET_PROJECT,
|
|
1085
1107
|
packageJsonName: process.env.NX_TASK_TARGET_PROJECT
|
|
@@ -1092,6 +1114,7 @@ function getApplicationContext(opts) {
|
|
|
1092
1114
|
);
|
|
1093
1115
|
const projectJson = JSON.parse(vercelProjectJsonPath);
|
|
1094
1116
|
if (projectJson.projectName) {
|
|
1117
|
+
logger.debug("[MFE Config] Application name from .vercel/project.json:", projectJson.projectName);
|
|
1095
1118
|
return {
|
|
1096
1119
|
name: projectJson.projectName,
|
|
1097
1120
|
projectName: projectJson.projectName
|
|
@@ -1115,6 +1138,7 @@ function getApplicationContext(opts) {
|
|
|
1115
1138
|
}
|
|
1116
1139
|
);
|
|
1117
1140
|
}
|
|
1141
|
+
logger.debug("[MFE Config] Application name from package.json:", packageJson.name);
|
|
1118
1142
|
return { name: packageJson.name, packageJsonName: packageJson.name };
|
|
1119
1143
|
} catch (err) {
|
|
1120
1144
|
throw MicrofrontendError.handle(err, {
|
|
@@ -1486,7 +1510,13 @@ var MicrofrontendsServer = class {
|
|
|
1486
1510
|
filePath,
|
|
1487
1511
|
cookies
|
|
1488
1512
|
} = {}) {
|
|
1513
|
+
logger.debug("[MFE Config] Starting config inference", {
|
|
1514
|
+
appName,
|
|
1515
|
+
directory: directory || process.cwd(),
|
|
1516
|
+
filePath
|
|
1517
|
+
});
|
|
1489
1518
|
if (filePath) {
|
|
1519
|
+
logger.debug("[MFE Config] Using explicit filePath:", filePath);
|
|
1490
1520
|
return MicrofrontendsServer.fromFile({
|
|
1491
1521
|
filePath,
|
|
1492
1522
|
cookies
|
|
@@ -1494,16 +1524,25 @@ var MicrofrontendsServer = class {
|
|
|
1494
1524
|
}
|
|
1495
1525
|
try {
|
|
1496
1526
|
const packageRoot = findPackageRoot(directory);
|
|
1527
|
+
logger.debug("[MFE Config] Package root:", packageRoot);
|
|
1497
1528
|
const applicationContext = getApplicationContext({
|
|
1498
1529
|
appName,
|
|
1499
1530
|
packageRoot
|
|
1500
1531
|
});
|
|
1532
|
+
logger.debug("[MFE Config] Application context:", applicationContext);
|
|
1501
1533
|
const customConfigFilename = process.env.VC_MICROFRONTENDS_CONFIG_FILE_NAME;
|
|
1534
|
+
if (customConfigFilename) {
|
|
1535
|
+
logger.debug(
|
|
1536
|
+
"[MFE Config] Custom config filename from VC_MICROFRONTENDS_CONFIG_FILE_NAME:",
|
|
1537
|
+
customConfigFilename
|
|
1538
|
+
);
|
|
1539
|
+
}
|
|
1502
1540
|
const maybeConfig = findConfig({
|
|
1503
1541
|
dir: packageRoot,
|
|
1504
1542
|
customConfigFilename
|
|
1505
1543
|
});
|
|
1506
1544
|
if (maybeConfig) {
|
|
1545
|
+
logger.debug("[MFE Config] Config found at package root:", maybeConfig);
|
|
1507
1546
|
return MicrofrontendsServer.fromFile({
|
|
1508
1547
|
filePath: maybeConfig,
|
|
1509
1548
|
cookies
|
|
@@ -1511,42 +1550,78 @@ var MicrofrontendsServer = class {
|
|
|
1511
1550
|
}
|
|
1512
1551
|
const repositoryRoot = findRepositoryRoot();
|
|
1513
1552
|
const isMonorepo2 = isMonorepo({ repositoryRoot });
|
|
1553
|
+
logger.debug(
|
|
1554
|
+
"[MFE Config] Repository root:",
|
|
1555
|
+
repositoryRoot,
|
|
1556
|
+
"Is monorepo:",
|
|
1557
|
+
isMonorepo2
|
|
1558
|
+
);
|
|
1514
1559
|
const configFromEnv = process.env.VC_MICROFRONTENDS_CONFIG;
|
|
1515
1560
|
if (typeof configFromEnv === "string") {
|
|
1561
|
+
logger.debug(
|
|
1562
|
+
"[MFE Config] Checking VC_MICROFRONTENDS_CONFIG:",
|
|
1563
|
+
configFromEnv
|
|
1564
|
+
);
|
|
1516
1565
|
const maybeConfigFromEnv = resolve(packageRoot, configFromEnv);
|
|
1517
1566
|
if (maybeConfigFromEnv) {
|
|
1567
|
+
logger.debug(
|
|
1568
|
+
"[MFE Config] Config loaded from VC_MICROFRONTENDS_CONFIG:",
|
|
1569
|
+
maybeConfigFromEnv
|
|
1570
|
+
);
|
|
1518
1571
|
return MicrofrontendsServer.fromFile({
|
|
1519
1572
|
filePath: maybeConfigFromEnv,
|
|
1520
1573
|
cookies
|
|
1521
1574
|
});
|
|
1522
1575
|
}
|
|
1523
1576
|
} else {
|
|
1577
|
+
const vercelDir = join2(packageRoot, ".vercel");
|
|
1578
|
+
logger.debug(
|
|
1579
|
+
"[MFE Config] Searching for config in .vercel directory:",
|
|
1580
|
+
vercelDir
|
|
1581
|
+
);
|
|
1524
1582
|
const maybeConfigFromVercel = findConfig({
|
|
1525
|
-
dir:
|
|
1583
|
+
dir: vercelDir,
|
|
1526
1584
|
customConfigFilename
|
|
1527
1585
|
});
|
|
1528
1586
|
if (maybeConfigFromVercel) {
|
|
1587
|
+
logger.debug(
|
|
1588
|
+
"[MFE Config] Config found in .vercel directory:",
|
|
1589
|
+
maybeConfigFromVercel
|
|
1590
|
+
);
|
|
1529
1591
|
return MicrofrontendsServer.fromFile({
|
|
1530
1592
|
filePath: maybeConfigFromVercel,
|
|
1531
1593
|
cookies
|
|
1532
1594
|
});
|
|
1533
1595
|
}
|
|
1534
1596
|
if (isMonorepo2) {
|
|
1597
|
+
logger.debug(
|
|
1598
|
+
"[MFE Config] Inferring microfrontends location in monorepo for application:",
|
|
1599
|
+
applicationContext.name
|
|
1600
|
+
);
|
|
1535
1601
|
const defaultPackage = inferMicrofrontendsLocation({
|
|
1536
1602
|
repositoryRoot,
|
|
1537
1603
|
applicationContext,
|
|
1538
1604
|
customConfigFilename
|
|
1539
1605
|
});
|
|
1606
|
+
logger.debug(
|
|
1607
|
+
"[MFE Config] Inferred package location:",
|
|
1608
|
+
defaultPackage
|
|
1609
|
+
);
|
|
1540
1610
|
const maybeConfigFromDefault = findConfig({
|
|
1541
1611
|
dir: defaultPackage,
|
|
1542
1612
|
customConfigFilename
|
|
1543
1613
|
});
|
|
1544
1614
|
if (maybeConfigFromDefault) {
|
|
1615
|
+
logger.debug(
|
|
1616
|
+
"[MFE Config] Config found in inferred package:",
|
|
1617
|
+
maybeConfigFromDefault
|
|
1618
|
+
);
|
|
1545
1619
|
return MicrofrontendsServer.fromFile({
|
|
1546
1620
|
filePath: maybeConfigFromDefault,
|
|
1547
1621
|
cookies
|
|
1548
1622
|
});
|
|
1549
1623
|
}
|
|
1624
|
+
logger.debug("[MFE Config] No config found in inferred package");
|
|
1550
1625
|
}
|
|
1551
1626
|
}
|
|
1552
1627
|
throw new MicrofrontendError(
|
|
@@ -1572,8 +1647,13 @@ var MicrofrontendsServer = class {
|
|
|
1572
1647
|
cookies
|
|
1573
1648
|
}) {
|
|
1574
1649
|
try {
|
|
1650
|
+
logger.debug("[MFE Config] Reading config from file:", filePath);
|
|
1575
1651
|
const configJson = fs6.readFileSync(filePath, "utf-8");
|
|
1576
1652
|
const config = MicrofrontendsServer.validate(configJson);
|
|
1653
|
+
logger.debug(
|
|
1654
|
+
"[MFE Config] Config loaded with applications:",
|
|
1655
|
+
Object.keys(config.applications)
|
|
1656
|
+
);
|
|
1577
1657
|
return new MicrofrontendsServer({
|
|
1578
1658
|
config,
|
|
1579
1659
|
overrides: cookies ? parseOverrides(cookies) : void 0
|