knip
Version:
Find unused files, dependencies and exports in your TypeScript and JavaScript projects
31 lines (30 loc) • 1.43 kB
JavaScript
import { compact } from '../../util/array.js';
import { toDeferResolve } from '../../util/input.js';
import { hasDependency } from '../../util/plugin.js';
import { api, resolveName } from './helpers.js';
const title = 'Babel';
const enablers = [/^@babel\//];
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
const config = ['babel.config.{json,js,cjs,mjs,cts}', '.babelrc.{json,js,cjs,mjs,cts}', '.babelrc', 'package.json'];
const getName = (value) => [Array.isArray(value) ? value[0] : value].filter(name => typeof name === 'string');
export const getDependenciesFromConfig = (config) => {
const presets = config.presets?.flatMap(getName).map(name => resolveName(name, 'preset')) ?? [];
const plugins = config.plugins?.flatMap(getName).map(name => resolveName(name, 'plugin')) ?? [];
const nested = config.env ? Object.values(config.env).flatMap(getDependenciesFromConfig) : [];
const overrides = config.overrides ? [config.overrides].flat().flatMap(getDependenciesFromConfig) : [];
return compact([...presets.map(toDeferResolve), ...plugins.map(toDeferResolve), ...nested, ...overrides]);
};
const resolveConfig = async (config) => {
if (typeof config === 'function')
config = config(api);
if (!config)
return [];
return getDependenciesFromConfig(config);
};
export default {
title,
enablers,
isEnabled,
config,
resolveConfig,
};