@module-federation/vite 1.16.0 → 1.16.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/lib/index.cjs CHANGED
@@ -6,6 +6,7 @@ let module$1 = require("module");
6
6
  let pathe = require("pathe");
7
7
  pathe = require_packageUtils.__toESM(pathe);
8
8
  let vite = require("vite");
9
+ let node_crypto = require("node:crypto");
9
10
  let url = require("url");
10
11
  let es_module_lexer = require("es-module-lexer");
11
12
  //#region src/utils/codeRewriter.ts
@@ -254,23 +255,8 @@ function getLitExportSubpathShares(sharedName) {
254
255
  return Object.keys(exportsField).filter((key) => key.startsWith("./") && key !== "." && !key.includes("*")).map((key) => `${sharedName}/${key.slice(2)}`);
255
256
  }
256
257
  function normalizeShareItem(key, shareItem) {
257
- let version;
258
258
  const isImportFalse = typeof shareItem === "object" && shareItem.import === false;
259
- try {
260
- try {
261
- version = require(pathe.join(require_packageUtils.getPackageName(key), "package.json")).version;
262
- } catch (e1) {
263
- try {
264
- const localPath = pathe.join(process.cwd(), "node_modules", require_packageUtils.getPackageName(key), "package.json");
265
- version = require(localPath).version;
266
- } catch (e2) {
267
- version = searchPackageVersion(key);
268
- if (!version && !isImportFalse) require_packageUtils.mfError(e1);
269
- }
270
- }
271
- } catch (e) {
272
- if (!isImportFalse) require_packageUtils.mfError(`Unexpected error resolving version for ${key}:`, e);
273
- }
259
+ const version = (typeof shareItem === "object" ? shareItem.version || inferVersionFromRequiredVersion(shareItem.requiredVersion) : void 0) || searchPackageVersion(key);
274
260
  if (typeof shareItem === "string") return {
275
261
  name: shareItem,
276
262
  version,
@@ -285,12 +271,12 @@ function normalizeShareItem(key, shareItem) {
285
271
  return {
286
272
  name: key,
287
273
  from: "",
288
- version: shareItem.version || inferVersionFromRequiredVersion(shareItem.requiredVersion) || version,
274
+ version,
289
275
  scope: shareItem.shareScope || "default",
290
276
  shareConfig: {
291
277
  import: shareItem.import,
292
278
  singleton: shareItem.singleton || false,
293
- requiredVersion: shareItem.requiredVersion || (isImportFalse ? "*" : version ? `^${version}` : "*"),
279
+ requiredVersion: shareItem.requiredVersion || (isImportFalse || shareItem.version ? "*" : version ? `^${version}` : "*"),
294
280
  strictVersion: !!shareItem.strictVersion
295
281
  }
296
282
  };
@@ -318,11 +304,13 @@ function normalizeShared(shared) {
318
304
  const result = {};
319
305
  const sourceEntries = [];
320
306
  if (Array.isArray(shared)) shared.forEach((key) => {
307
+ if (isModuleFederationRuntimePackage(key)) return;
321
308
  result[key] = normalizeShareItem(key, key);
322
309
  explicitSharedKeys.add(key);
323
310
  sourceEntries.push([key, key]);
324
311
  });
325
312
  else if (typeof shared === "object") Object.keys(shared).forEach((key) => {
313
+ if (isModuleFederationRuntimePackage(key)) return;
326
314
  const value = shared[key];
327
315
  result[key] = normalizeShareItem(key, value);
328
316
  explicitSharedKeys.add(key);
@@ -336,11 +324,14 @@ function normalizeShared(shared) {
336
324
  });
337
325
  return result;
338
326
  }
327
+ function isModuleFederationRuntimePackage(key) {
328
+ return key === "@module-federation/runtime" || key === "@module-federation/runtime-core";
329
+ }
339
330
  function shouldAutoShareDependency(key) {
340
331
  const pkg = require_packageUtils.getInstalledPackageJson(key)?.packageJson;
341
332
  if (!pkg) return false;
342
333
  if (!pkg.browser && !pkg.exports && typeof pkg.module !== "string") return false;
343
- if (key === "@module-federation/vite") return false;
334
+ if (key === "@module-federation/vite" || isModuleFederationRuntimePackage(key)) return false;
344
335
  const entry = [
345
336
  pkg.module,
346
337
  pkg.main,
@@ -1984,11 +1975,13 @@ const addEntry = ({ entryName, entryPath, fileName, inject = "entry", forceClien
1984
1975
  let rewritten = false;
1985
1976
  htmlContent = htmlContent.replace(scriptRegex, (scriptTag, entrySrc) => {
1986
1977
  rewritten = true;
1987
- const bootstrapFileName = `mf-entry-bootstrap-${bootstrapIndex++}.js`;
1978
+ const bootstrapSource = getSystemBootstrapSource(initPath, entrySrc);
1979
+ const bootstrapHash = (0, node_crypto.createHash)("sha256").update(bootstrapSource).digest("hex").slice(0, 8);
1980
+ const bootstrapFileName = `mf-entry-bootstrap-${bootstrapIndex++}-${bootstrapHash}.js`;
1988
1981
  const bootstrapRef = this.emitFile({
1989
1982
  type: "asset",
1990
1983
  fileName: bootstrapFileName,
1991
- source: getSystemBootstrapSource(initPath, entrySrc)
1984
+ source: bootstrapSource
1992
1985
  });
1993
1986
  const bootstrapPath = viteConfig.base + this.getFileName(bootstrapRef);
1994
1987
  return scriptTag.replace(entrySrc, bootstrapPath);
package/lib/index.mjs CHANGED
@@ -1,10 +1,11 @@
1
- import { a as getPackageName, c as isNuxtProjectRoot, d as setPackageDetectionCwd, f as createModuleFederationError, h as __require, i as getPackageDetectionCwd, l as packageNameDecode, m as mfWarn, n as getInstalledPackageJson, o as getPackageNameFromNodeModulePath, p as mfError, r as getIsRolldown, s as hasPackageDependency, t as getInstalledPackageEntry, u as packageNameEncode } from "./packageUtils-DOekOsFz.mjs";
1
+ import { a as getPackageName, c as isNuxtProjectRoot, d as setPackageDetectionCwd, f as createModuleFederationError, h as __require, i as getPackageDetectionCwd, l as packageNameDecode, m as mfWarn, n as getInstalledPackageJson, o as getPackageNameFromNodeModulePath, r as getIsRolldown, s as hasPackageDependency, t as getInstalledPackageEntry, u as packageNameEncode } from "./packageUtils-DOekOsFz.mjs";
2
2
  import * as fs$1 from "fs";
3
3
  import { existsSync, readFileSync, realpathSync, statSync, writeFileSync } from "fs";
4
4
  import { createRequire } from "module";
5
5
  import * as path$1 from "pathe";
6
6
  import path, { basename } from "pathe";
7
7
  import { version } from "vite";
8
+ import { createHash } from "node:crypto";
8
9
  import { fileURLToPath } from "url";
9
10
  import { init, parse } from "es-module-lexer";
10
11
  //#region src/utils/codeRewriter.ts
@@ -253,22 +254,8 @@ function getLitExportSubpathShares(sharedName) {
253
254
  return Object.keys(exportsField).filter((key) => key.startsWith("./") && key !== "." && !key.includes("*")).map((key) => `${sharedName}/${key.slice(2)}`);
254
255
  }
255
256
  function normalizeShareItem(key, shareItem) {
256
- let version;
257
257
  const isImportFalse = typeof shareItem === "object" && shareItem.import === false;
258
- try {
259
- try {
260
- version = __require(path$1.join(getPackageName(key), "package.json")).version;
261
- } catch (e1) {
262
- try {
263
- version = __require(path$1.join(process.cwd(), "node_modules", getPackageName(key), "package.json")).version;
264
- } catch (e2) {
265
- version = searchPackageVersion(key);
266
- if (!version && !isImportFalse) mfError(e1);
267
- }
268
- }
269
- } catch (e) {
270
- if (!isImportFalse) mfError(`Unexpected error resolving version for ${key}:`, e);
271
- }
258
+ const version = (typeof shareItem === "object" ? shareItem.version || inferVersionFromRequiredVersion(shareItem.requiredVersion) : void 0) || searchPackageVersion(key);
272
259
  if (typeof shareItem === "string") return {
273
260
  name: shareItem,
274
261
  version,
@@ -283,12 +270,12 @@ function normalizeShareItem(key, shareItem) {
283
270
  return {
284
271
  name: key,
285
272
  from: "",
286
- version: shareItem.version || inferVersionFromRequiredVersion(shareItem.requiredVersion) || version,
273
+ version,
287
274
  scope: shareItem.shareScope || "default",
288
275
  shareConfig: {
289
276
  import: shareItem.import,
290
277
  singleton: shareItem.singleton || false,
291
- requiredVersion: shareItem.requiredVersion || (isImportFalse ? "*" : version ? `^${version}` : "*"),
278
+ requiredVersion: shareItem.requiredVersion || (isImportFalse || shareItem.version ? "*" : version ? `^${version}` : "*"),
292
279
  strictVersion: !!shareItem.strictVersion
293
280
  }
294
281
  };
@@ -316,11 +303,13 @@ function normalizeShared(shared) {
316
303
  const result = {};
317
304
  const sourceEntries = [];
318
305
  if (Array.isArray(shared)) shared.forEach((key) => {
306
+ if (isModuleFederationRuntimePackage(key)) return;
319
307
  result[key] = normalizeShareItem(key, key);
320
308
  explicitSharedKeys.add(key);
321
309
  sourceEntries.push([key, key]);
322
310
  });
323
311
  else if (typeof shared === "object") Object.keys(shared).forEach((key) => {
312
+ if (isModuleFederationRuntimePackage(key)) return;
324
313
  const value = shared[key];
325
314
  result[key] = normalizeShareItem(key, value);
326
315
  explicitSharedKeys.add(key);
@@ -334,11 +323,14 @@ function normalizeShared(shared) {
334
323
  });
335
324
  return result;
336
325
  }
326
+ function isModuleFederationRuntimePackage(key) {
327
+ return key === "@module-federation/runtime" || key === "@module-federation/runtime-core";
328
+ }
337
329
  function shouldAutoShareDependency(key) {
338
330
  const pkg = getInstalledPackageJson(key)?.packageJson;
339
331
  if (!pkg) return false;
340
332
  if (!pkg.browser && !pkg.exports && typeof pkg.module !== "string") return false;
341
- if (key === "@module-federation/vite") return false;
333
+ if (key === "@module-federation/vite" || isModuleFederationRuntimePackage(key)) return false;
342
334
  const entry = [
343
335
  pkg.module,
344
336
  pkg.main,
@@ -1982,11 +1974,13 @@ const addEntry = ({ entryName, entryPath, fileName, inject = "entry", forceClien
1982
1974
  let rewritten = false;
1983
1975
  htmlContent = htmlContent.replace(scriptRegex, (scriptTag, entrySrc) => {
1984
1976
  rewritten = true;
1985
- const bootstrapFileName = `mf-entry-bootstrap-${bootstrapIndex++}.js`;
1977
+ const bootstrapSource = getSystemBootstrapSource(initPath, entrySrc);
1978
+ const bootstrapHash = createHash("sha256").update(bootstrapSource).digest("hex").slice(0, 8);
1979
+ const bootstrapFileName = `mf-entry-bootstrap-${bootstrapIndex++}-${bootstrapHash}.js`;
1986
1980
  const bootstrapRef = this.emitFile({
1987
1981
  type: "asset",
1988
1982
  fileName: bootstrapFileName,
1989
- source: getSystemBootstrapSource(initPath, entrySrc)
1983
+ source: bootstrapSource
1990
1984
  });
1991
1985
  const bootstrapPath = viteConfig.base + this.getFileName(bootstrapRef);
1992
1986
  return scriptTag.replace(entrySrc, bootstrapPath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/vite",
3
- "version": "1.16.0",
3
+ "version": "1.16.1",
4
4
  "description": "Vite plugin for Module Federation",
5
5
  "type": "module",
6
6
  "main": "./lib/index.cjs",
@@ -96,4 +96,4 @@
96
96
  "vite": "^8.0.10",
97
97
  "vitest": "^4.0.18"
98
98
  }
99
- }
99
+ }