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

57 lines (56 loc) 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getReactDependenciesVersionsToInstall = getReactDependenciesVersionsToInstall; exports.isReact18 = isReact18; exports.getInstalledReactVersion = getInstalledReactVersion; exports.getInstalledReactVersionFromGraph = getInstalledReactVersionFromGraph; const devkit_1 = require("@nx/devkit"); const semver_1 = require("semver"); const versions_1 = require("./versions"); async function getReactDependenciesVersionsToInstall(tree) { if (await isReact18(tree)) { return { react: versions_1.reactV18Version, 'react-dom': versions_1.reactDomV18Version, 'react-is': versions_1.reactIsV18Version, '@types/react': versions_1.typesReactV18Version, '@types/react-dom': versions_1.typesReactDomV18Version, '@types/react-is': versions_1.typesReactIsV18Version, }; } else { return { react: versions_1.reactVersion, 'react-dom': versions_1.reactDomVersion, 'react-is': versions_1.reactIsVersion, '@types/react': versions_1.typesReactVersion, '@types/react-dom': versions_1.typesReactDomVersion, '@types/react-is': versions_1.typesReactIsVersion, }; } } async function isReact18(tree) { let installedReactVersion = await getInstalledReactVersionFromGraph(); if (!installedReactVersion) { installedReactVersion = getInstalledReactVersion(tree); } return (0, semver_1.major)(installedReactVersion) === 18; } function getInstalledReactVersion(tree) { const pkgJson = (0, devkit_1.readJson)(tree, 'package.json'); const installedReactVersion = pkgJson.dependencies && pkgJson.dependencies['react']; if (!installedReactVersion || installedReactVersion === 'latest' || installedReactVersion === 'next') { return (0, semver_1.clean)(versions_1.reactVersion) ?? (0, semver_1.coerce)(versions_1.reactVersion).version; } return (0, semver_1.clean)(installedReactVersion) ?? (0, semver_1.coerce)(installedReactVersion).version; } async function getInstalledReactVersionFromGraph() { const graph = await (0, devkit_1.createProjectGraphAsync)(); const reactDep = graph.externalNodes?.['npm:react']; if (!reactDep) { return undefined; } return (0, semver_1.clean)(reactDep.data.version) ?? (0, semver_1.coerce)(reactDep.data.version).version; }