es-guard
Version:
A tool to check JavaScript compatibility with target environments
47 lines • 1.77 kB
JavaScript
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