UNPKG

@aak.lear/eslint-config

Version:

This package simplifies the initial setup of eslint and prettier. It installs and apply eslint-config-airbnb to your project, also resolves peerDependencies that are required for eslint-config-airbnb package.

60 lines (45 loc) 1.74 kB
import { getInstallConfirmation, getPreferences } from './prompts/index.js'; import { packagesNames, packagesShortNames } from './packagesNames.js'; import { install, installWithPeerDeps } from './install/index.js'; import { writeConfigs } from './configs/index.js'; import picocolors from 'picocolors'; const { cyan, green, yellow, bold } = picocolors; export const main = async () => { const { configs, withTypescript, withPrettier } = await getPreferences(); console.log(); if (!configs || configs.length === 0) { console.log(`${yellow('No rule sets selected. Exiting')}`); return; } const packagesList = []; const packagesWithPeerDepsList = configs.map((name) => packagesNames[name]); const extendsList = configs.map((name) => packagesShortNames[name]); if (withPrettier) { packagesList.push('prettier', 'eslint-config-prettier'); extendsList.push('prettier'); } console.log(`Checking peer dependencies for selected rule sets...\n`); console.log( `This packages will be installed with latest versions and peer dependencies:`, ); console.log(`${packagesWithPeerDepsList.map(cyan).join('\n')}\n`); console.log(`This packages will be installed with latest versions:`); console.log(`${packagesList.map(cyan).join('\n')}\n`); const isConfirmed = await getInstallConfirmation(); if (!isConfirmed) { console.log(`${yellow('Exiting')}`); return; } await install(packagesList); await installWithPeerDeps(packagesWithPeerDepsList); console.log(); const root = process.cwd(); console.log('Writing config files...\n'); await writeConfigs({ root, extendsList, withPrettier, withTypescript, }); console.log(`${bold(green('SUCCESS'))}`); };