@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
JavaScript
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'))}`);
};