Skip to content

Commit

Permalink
feat: adjust bridge router alias strategy (#2950)
Browse files Browse the repository at this point in the history
  • Loading branch information
danpeen authored Sep 14, 2024
1 parent 4a79d27 commit d90295b
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 38 deletions.
5 changes: 5 additions & 0 deletions .changeset/fifty-kangaroos-compete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@module-federation/bridge-react-webpack-plugin': patch
---

chore: adjust bridge router alias strategy to alias to router-v6 when not found react-router-dom in package.json
83 changes: 45 additions & 38 deletions packages/bridge/bridge-react-webpack-plugin/src/utis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@ export const findPackageJson = (startPath: string): string | null => {
return null;
};

export const getBridgeRouterAlias = (
originalAlias: string,
): Record<string, string> => {
const getDependencies = () => {
const userPackageJsonPath = path.resolve(process.cwd(), 'package.json');
let userDependencies: Record<string, string> = {};

Expand All @@ -45,35 +43,19 @@ export const getBridgeRouterAlias = (
...userPackageJson.devDependencies,
};
}
return userDependencies;
};

let bridgeRouterAlias = {};
let majorVersion = 0;
let reactRouterDomPath = '';

const reactRouterDomVersion = userDependencies['react-router-dom'];

if (originalAlias) {
reactRouterDomPath = originalAlias;
} else if (reactRouterDomVersion) {
majorVersion = checkVersion(reactRouterDomVersion);
reactRouterDomPath = require.resolve('react-router-dom');
} else {
reactRouterDomPath = require.resolve('react-router-dom');
}

const packageJsonPath = findPackageJson(reactRouterDomPath);

if (packageJsonPath) {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
majorVersion = checkVersion(packageJson.version);
} else {
console.warn('Unable to find package.json for react-router-dom');
}
const reactRouterDomV5AliasPath =
'@module-federation/bridge-react/dist/router-v5.es.js';
const reactRouterDomV6AliasPath =
'@module-federation/bridge-react/dist/router-v6.es.js';

const setRouterAlias = (majorVersion: number, reactRouterDomPath: string) => {
let bridgeRouterAlias = {};
if (majorVersion === 5) {
bridgeRouterAlias = {
'react-router-dom$':
'@module-federation/bridge-react/dist/router-v5.es.js',
'react-router-dom$': reactRouterDomV5AliasPath,
};
try {
require.resolve('react-router-dom/index.js');
Expand All @@ -86,10 +68,8 @@ export const getBridgeRouterAlias = (
}
} else if (majorVersion === 6) {
bridgeRouterAlias = {
'react-router-dom$':
'@module-federation/bridge-react/dist/router-v6.es.js',
'react-router-dom$': reactRouterDomV6AliasPath,
};

try {
require.resolve('react-router-dom/dist/index.js');
} catch (error) {
Expand All @@ -99,13 +79,40 @@ export const getBridgeRouterAlias = (
'react-router-dom/dist/index.js': reactRouterDomPath,
};
}
} else {
console.warn('react-router-dom version is not supported');
}

console.log(
'<<<<<<<<<<<<< bridgeRouterAlias >>>>>>>>>>>>>',
bridgeRouterAlias,
);
return bridgeRouterAlias;
};

export const getBridgeRouterAlias = (
originalAlias: string,
): Record<string, string> => {
const userDependencies = getDependencies();
const reactRouterDomPath = originalAlias
? originalAlias
: userDependencies['react-router-dom']
? require.resolve('react-router-dom')
: '';
const packageJsonPath = reactRouterDomPath
? findPackageJson(reactRouterDomPath)
: '';
// if find react-router-dom in package.json
if (packageJsonPath) {
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
const majorVersion = checkVersion(packageJson.version);
const bridgeRouterAlias = setRouterAlias(majorVersion, reactRouterDomPath);
console.log(
'<<<<<<<<<<<<< bridgeRouterAlias >>>>>>>>>>>>>',
bridgeRouterAlias,
);
return bridgeRouterAlias;
} else {
const bridgeRouterAlias = {
'react-router-dom$': reactRouterDomV6AliasPath,
};
console.log(
'<<<<<<<<<<<<< default bridgeRouterAlias >>>>>>>>>>>>>',
bridgeRouterAlias,
);
return bridgeRouterAlias;
}
};

0 comments on commit d90295b

Please sign in to comment.