- feat(react): add remote rspack module federation support - feat(react): add host rspack module federation support - feat(react): add federate module rspack module federation support - fix(react): migration test <!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior <!-- This is the behavior we have today --> We do not have an option to generate a react host and remote with rspack ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> Add rspack as an option when generating host and remote ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import {
|
|
joinPathFragments,
|
|
Tree,
|
|
applyChangesToString,
|
|
addDependenciesToPackageJson,
|
|
} from '@nx/devkit';
|
|
import { ensureTypescript } from '@nx/js/src/utils/typescript/ensure-typescript';
|
|
import { addInitialRoutes } from '../../../utils/ast-utils';
|
|
import { reactRouterDomVersion } from '../../../utils/versions';
|
|
import { maybeJs } from '../../../utils/maybe-js';
|
|
import { NormalizedSchema } from '../schema';
|
|
|
|
let tsModule: typeof import('typescript');
|
|
|
|
export function addRouting(host: Tree, options: NormalizedSchema) {
|
|
if (!options.routing) {
|
|
return () => {};
|
|
}
|
|
|
|
if (!tsModule) {
|
|
tsModule = ensureTypescript();
|
|
}
|
|
const appPath = joinPathFragments(
|
|
options.appProjectRoot,
|
|
maybeJs(
|
|
{
|
|
js: options.js,
|
|
useJsx: options.bundler === 'vite' || options.bundler === 'rspack',
|
|
},
|
|
`src/app/${options.fileName}.tsx`
|
|
)
|
|
);
|
|
const appFileContent = host.read(appPath, 'utf-8');
|
|
const appSource = tsModule.createSourceFile(
|
|
appPath,
|
|
appFileContent,
|
|
tsModule.ScriptTarget.Latest,
|
|
true
|
|
);
|
|
|
|
const changes = applyChangesToString(
|
|
appFileContent,
|
|
addInitialRoutes(appPath, appSource)
|
|
);
|
|
host.write(appPath, changes);
|
|
|
|
if (!options.skipPackageJson) {
|
|
return addDependenciesToPackageJson(
|
|
host,
|
|
{ 'react-router-dom': reactRouterDomVersion },
|
|
{}
|
|
);
|
|
}
|
|
|
|
return () => {};
|
|
}
|