@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
23 lines (22 loc) • 1.18 kB
JavaScript
import { defaultOptions } from "./options/defaultOptions.mjs";
import path from "node:path";
import { styleText } from "node:util";
import { isPackageExists } from "local-pkg";
//#region src/helpers/isPackageDetected.ts
const detectedPackages = [];
function logDetectedPackages(disabledConfigs) {
const nonDisabledDetectedPackages = detectedPackages.filter((packageName) => !disabledConfigs[packageName]);
if (nonDisabledDetectedPackages.length > 0) {
nonDisabledDetectedPackages.sort();
console.info(`${styleText("green", "✔")} ESLint integrations enabled via dependency detection:`, nonDisabledDetectedPackages.map((packageName) => styleText("blue", packageName)).join(", "));
}
}
function isPackageDetected(packageName, options) {
const { packageDir = defaultOptions.packageDir, autoDetectDeps = defaultOptions.autoDetectDeps } = options;
if (autoDetectDeps === false) return false;
const isPackageInstalled = isPackageExists(packageName, { paths: [path.resolve(packageDir)] });
if (autoDetectDeps === "verbose" && isPackageInstalled) detectedPackages.push(packageName);
return isPackageInstalled;
}
//#endregion
export { isPackageDetected, logDetectedPackages };