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