57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import type { GeneratorCallback, Tree } from '@nx/devkit';
|
|
import {
|
|
addDependenciesToPackageJson,
|
|
generateFiles,
|
|
joinPathFragments,
|
|
names,
|
|
readProjectConfiguration,
|
|
runTasksInSerial,
|
|
updateProjectConfiguration,
|
|
} from '@nx/devkit';
|
|
|
|
import type { Schema } from '../schema';
|
|
import { moduleFederationNodeVersion } from '../../../utils/versions';
|
|
import { normalizeProjectName } from '../../application/lib/normalize-options';
|
|
|
|
export async function setupSsrForHost(
|
|
tree: Tree,
|
|
options: Schema,
|
|
appName: string,
|
|
defaultRemoteManifest: { name: string; port: number }[]
|
|
) {
|
|
const tasks: GeneratorCallback[] = [];
|
|
let project = readProjectConfiguration(tree, appName);
|
|
project.targets.serve.executor = '@nx/react:module-federation-ssr-dev-server';
|
|
updateProjectConfiguration(tree, appName, project);
|
|
|
|
generateFiles(
|
|
tree,
|
|
joinPathFragments(__dirname, '../files/module-federation-ssr'),
|
|
project.root,
|
|
{
|
|
...options,
|
|
remotes: defaultRemoteManifest.map(({ name, port }) => {
|
|
const remote = normalizeProjectName({ ...options, name });
|
|
return {
|
|
...names(remote),
|
|
port,
|
|
};
|
|
}),
|
|
appName,
|
|
tmpl: '',
|
|
browserBuildOutputPath: project.targets.build.options.outputPath,
|
|
}
|
|
);
|
|
|
|
const installTask = addDependenciesToPackageJson(
|
|
tree,
|
|
{
|
|
'@module-federation/node': moduleFederationNodeVersion,
|
|
},
|
|
{}
|
|
);
|
|
tasks.push(installTask);
|
|
|
|
return runTasksInSerial(...tasks);
|
|
}
|