UNPKG

@nx/vite

Version:

The Nx Plugin for building and testing applications using Vite

77 lines (76 loc) 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkDependenciesInstalled = checkDependenciesInstalled; exports.moveToDevDependencies = moveToDevDependencies; const devkit_1 = require("@nx/devkit"); const internal_1 = require("@nx/js/internal"); const semver_1 = require("semver"); const versions_1 = require("../../../utils/versions"); const version_utils_1 = require("../../../utils/version-utils"); function hasIncompatibleInstalledEsbuild(host) { const installedEsbuildVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(host, 'esbuild'); if (!installedEsbuildVersion) { return false; } try { return !(0, semver_1.intersects)(installedEsbuildVersion, internal_1.esbuildVersion, { includePrerelease: true, }); } catch { return true; } } async function checkDependenciesInstalled(host, schema) { // Determine which vite version to install: // 1. Explicit flags take priority (useViteV5/V6/V7) // 2. If vite is already installed, keep the matching major version // 3. If esbuild is already installed but incompatible with Vite 8, use Vite 7 // 4. Otherwise, use the latest default (^8.0.0) const installedMajor = (0, version_utils_1.getInstalledViteMajorVersion)(host); const installedEsbuildVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(host, 'esbuild'); const useViteV7ForEsbuildCompatibility = installedMajor == null && hasIncompatibleInstalledEsbuild(host); if (useViteV7ForEsbuildCompatibility) { devkit_1.output.warn({ title: 'Installed esbuild is incompatible with Vite 8. Using Vite 7.', bodyLines: [ `Found esbuild version "${installedEsbuildVersion}" in the workspace root package.json.`, `Update esbuild to a range compatible with ${internal_1.esbuildVersion} if you want newly generated Vite projects to use Vite 8 by default.`, ], }); } const viteVersionToInstall = schema.useViteV5 ? versions_1.viteV5Version : schema.useViteV6 ? versions_1.viteV6Version : schema.useViteV7 || installedMajor === 7 || useViteV7ForEsbuildCompatibility ? versions_1.viteV7Version : installedMajor === 6 ? versions_1.viteV6Version : installedMajor === 5 ? versions_1.viteV5Version : versions_1.viteVersion; return (0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@nx/vite': versions_1.nxVersion, '@nx/web': versions_1.nxVersion, vite: viteVersionToInstall, jiti: versions_1.jitiVersion, }, undefined, schema.keepExistingVersions ?? true); } function moveToDevDependencies(tree) { let wasUpdated = false; (0, devkit_1.updateJson)(tree, 'package.json', (packageJson) => { packageJson.dependencies = packageJson.dependencies || {}; packageJson.devDependencies = packageJson.devDependencies || {}; if (packageJson.dependencies['@nx/vite']) { packageJson.devDependencies['@nx/vite'] = packageJson.dependencies['@nx/vite']; delete packageJson.dependencies['@nx/vite']; wasUpdated = true; } return packageJson; }); return wasUpdated ? () => (0, devkit_1.installPackagesTask)(tree) : () => { }; }