eslint-config-ai-swe
Version:
ESLint configuration optimized for AI Agents SWE with TypeScript and multi-framework support.
80 lines (67 loc) • 2.07 kB
JavaScript
import { installPackage } from '@antfu/install-pkg';
export const frameworkDependencies = {
react: ['eslint-plugin-react', 'eslint-plugin-react-hooks'],
vue: ['eslint-plugin-vue'],
svelte: ['eslint-plugin-svelte'],
next: ['eslint-plugin-react', 'eslint-plugin-react-hooks'],
nuxt: ['eslint-plugin-vue'],
angular: [],
node: [],
unknown: [],
};
export async function installFrameworkDependencies(framework, options = {}) {
const { dryRun = false, silent = false } = options;
const dependencies = frameworkDependencies[framework] || [];
if (dependencies.length === 0) {
if (!silent) {
console.log('✅ Aucune dépendance supplémentaire nécessaire.');
}
return true;
}
if (!silent) {
console.log('📦 Installation des dépendances requises...');
}
const installPromises = dependencies.map(async (dep) => {
try {
if (!silent) {
console.log(` 📋 Installation de ${dep}...`);
}
if (dryRun) {
if (!silent) {
console.log(` 🔍 [DRY RUN] Serait installé: ${dep}`);
}
return true;
}
await installPackage(dep, { silent: true });
if (!silent) {
console.log(` ✅ ${dep} installé avec succès`);
}
return true;
} catch (error) {
if (!silent) {
console.warn(` ⚠️ Échec de l'installation de ${dep}: ${error.message}`);
}
return false;
}
});
const results = await Promise.all(installPromises);
const successCount = results.filter(Boolean).length;
const totalCount = dependencies.length;
if (!silent) {
console.log(`📊 Résultat: ${successCount}/${totalCount} dépendances installées`);
}
return successCount === totalCount;
}
export function getMissingDependencies(framework) {
const required = frameworkDependencies[framework] || [];
const missing = [];
// Check if each dependency is installed
required.forEach(dep => {
try {
require.resolve(dep);
} catch {
missing.push(dep);
}
});
return missing;
}