UNPKG

@nx/react

Version:

The React plugin for Nx contains executors and generators for managing React applications and libraries within an Nx workspace. It provides: - Integration with libraries such as Jest, Vitest, Playwright, Cypress, and Storybook. - Generators for applica

85 lines (84 loc) 3.42 kB
"use strict"; 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 }, }; }