@perfective/eslint-config
Version:
ESLint shareable rules configuration
26 lines • 576 B
JavaScript
import { hasNodeModule } from "./node.js";
export function optionalRule(rule, config) {
const plugin = pluginOfRule(rule);
if (plugin === null) {
return {};
}
if (hasEslintPlugin(plugin)) {
return {
[rule]: config
};
}
return {};
}
export function hasEslintPlugin(plugin) {
if (plugin.startsWith('@')) {
return hasNodeModule(`${plugin}/eslint-plugin`);
}
return hasNodeModule(`eslint-plugin-${plugin}`);
}
function pluginOfRule(rule) {
const parts = rule.split('/');
if (parts.length > 1) {
return parts[0];
}
return null;
}