UNPKG

es-guard

Version:

A tool to check JavaScript compatibility with target environments

47 lines 1.77 kB
import * as fs from "fs"; import * as path from "path"; import { detectProjectType } from "./defaults.js"; import { getProjectType, isProjectTypeDetected, setProjectType, verboseMode } from "./globalState.js"; import { isPackageJson, readJsonFile } from "./utils.js"; /** * Detect and cache project type globally (lazy initialization) */ export const detectAndCacheProjectType = (cwd = process.cwd()) => { // Return cached result if already detected if (isProjectTypeDetected()) { return getProjectType() || null; } // Detect project type from package.json const packageJsonPath = path.join(cwd, "package.json"); if (fs.existsSync(packageJsonPath)) { try { const pkg = readJsonFile(packageJsonPath); if (isPackageJson(pkg)) { const detectedType = detectProjectType(pkg.dependencies, pkg.devDependencies); setProjectType(detectedType); if (verboseMode) { console.log(`🔍 Project type detected: ${detectedType}`); } return detectedType; } } catch (error) { // Ignore errors when detecting project type if (verboseMode) { console.log(` ⚠️ Error detecting project type: ${error instanceof Error ? error.message : String(error)}`); } } } // No project type detected if (verboseMode) { console.log(`🔍 No project type detected`); } return null; }; /** * Get the current project type (detects if not already cached) */ export const getCurrentProjectType = (cwd = process.cwd()) => { return detectAndCacheProjectType(cwd) || "generic"; }; //# sourceMappingURL=projectType.js.map