2023-10-03 19:00:25 -04:00

38 lines
830 B
TypeScript

import type { ESLint } from 'eslint';
import * as fs from 'node:fs';
import { resolve, basename, extname } from 'node:path';
function tryRequire(candidates: string[]) {
for (const candidate of candidates) {
try {
require(candidate);
return;
} catch {}
}
}
// https://github.com/gulpjs/interpret
tryRequire([
'esbin/register',
'esbuild-register',
'ts-node/register/transpile-only',
'@swc/register',
'@babel/register',
'coffeescript/register',
]);
const folders = resolve(process.cwd(), 'eslint-local-rules');
const files = fs.readdirSync(folders);
const plugin: ESLint.Plugin = {
rules: {},
};
for (const file of files) {
const name = basename(file, extname(file));
const module = require(resolve(folders, file));
plugin.rules![name] = module.default ?? module;
}
export = plugin;