@nx/react
Version:
85 lines (84 loc) • 3.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProviderDeps = getProviderDeps;
exports.getConsumerDeps = getConsumerDeps;
const tslib_1 = require("tslib");
const mfVersions = tslib_1.__importStar(require("./mf-versions"));
const versions_1 = require("@nx/js/src/utils/versions");
const versions_2 = require("../../utils/versions");
// Returned to both surfaces:
// - addDependenciesToPackageJson(tree, deps, devDeps) writes to root package.json
// so bare `vite` / `rsbuild` / `rspack` in the run-commands serve target resolve
// in integrated workspaces.
// - The per-project package.json template uses the same map so a pnpm-workspace
// setup (which installs per-project) gets the same versions without drift.
function getProviderDeps(bundler) {
const base = {
dependencies: {
react: versions_2.reactVersion,
'react-dom': versions_2.reactDomVersion,
},
devDependencies: {
'@types/react': versions_2.typesReactVersion,
'@types/react-dom': versions_2.typesReactDomVersion,
typescript: versions_1.typescriptVersion,
},
};
return mergeWith(base, bundlerDeps(bundler));
}
function getConsumerDeps(bundler) {
const base = {
dependencies: {
'@module-federation/runtime': mfVersions.moduleFederationRuntimeVersion,
react: versions_2.reactVersion,
'react-dom': versions_2.reactDomVersion,
},
devDependencies: {
'@types/react': versions_2.typesReactVersion,
'@types/react-dom': versions_2.typesReactDomVersion,
typescript: versions_1.typescriptVersion,
},
};
return mergeWith(base, bundlerDeps(bundler));
}
function bundlerDeps(bundler) {
switch (bundler) {
case 'vite':
return {
dependencies: {},
devDependencies: {
'@module-federation/vite': mfVersions.moduleFederationVitePluginVersion,
'@vitejs/plugin-react': mfVersions.vitejsPluginReactVersion,
vite: mfVersions.viteVersion,
},
};
case 'rsbuild':
return {
dependencies: {},
devDependencies: {
'@module-federation/rsbuild-plugin': mfVersions.moduleFederationRsbuildPluginVersion,
'@rsbuild/core': mfVersions.rsbuildCoreVersion,
'@rsbuild/plugin-react': mfVersions.rsbuildPluginReactVersion,
},
};
case 'rspack':
// Rspack provider/consumer both put @module-federation/enhanced in
// dependencies (it's imported at runtime by the federation plugin call).
return {
dependencies: {
'@module-federation/enhanced': mfVersions.moduleFederationEnhancedVersion,
},
devDependencies: {
'@rspack/cli': mfVersions.rspackCliVersion,
'@rspack/core': mfVersions.rspackCoreVersion,
'@rspack/dev-server': mfVersions.rspackDevServerVersion,
},
};
}
}
function mergeWith(a, b) {
return {
dependencies: { ...a.dependencies, ...b.dependencies },
devDependencies: { ...a.devDependencies, ...b.devDependencies },
};
}