UNPKG

@nx/next

Version:

The Next.js plugin for Nx contains executors and generators for managing Next.js applications and libraries within an Nx workspace. It provides: - Scaffolding for creating, building, serving, linting, and testing Next.js applications. - Integration wit

47 lines (46 loc) 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNextDependenciesVersionsToInstall = getNextDependenciesVersionsToInstall; exports.isNext14 = isNext14; exports.getInstalledNextVersion = getInstalledNextVersion; exports.getInstalledNextVersionFromGraph = getInstalledNextVersionFromGraph; const devkit_1 = require("@nx/devkit"); const semver_1 = require("semver"); const versions_1 = require("./versions"); async function getNextDependenciesVersionsToInstall(tree, isReact18 = false) { if (await isNext14(tree)) { return { next: versions_1.next14Version, }; } else { return { next: versions_1.nextVersion, }; } } async function isNext14(tree) { let installedNextVersion = await getInstalledNextVersionFromGraph(); if (!installedNextVersion) { installedNextVersion = getInstalledNextVersion(tree); } return (0, semver_1.major)(installedNextVersion) === 14; } function getInstalledNextVersion(tree) { const pkgJson = (0, devkit_1.readJson)(tree, 'package.json'); const installedNextVersion = pkgJson.dependencies && pkgJson.dependencies['next']; if (!installedNextVersion || installedNextVersion === 'latest' || installedNextVersion === 'next') { return (0, semver_1.clean)(versions_1.nextVersion) ?? (0, semver_1.coerce)(versions_1.nextVersion).version; } return (0, semver_1.clean)(installedNextVersion) ?? (0, semver_1.coerce)(installedNextVersion).version; } async function getInstalledNextVersionFromGraph() { const graph = await (0, devkit_1.createProjectGraphAsync)(); const nextDep = graph.externalNodes?.['npm:next']; if (!nextDep) { return undefined; } return (0, semver_1.clean)(nextDep.data.version) ?? (0, semver_1.coerce)(nextDep.data.version).version; }