@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
43 lines (41 loc) • 1.35 kB
JavaScript
import { globs } from "../utils/globs.js";
import { getJavaScriptRules } from "../rules/javascript.js";
import typescriptESLint from "typescript-eslint";
import { mergeConfigs } from "eslint-flat-config-utils";
import globals from "globals";
import javascriptESLint from "@eslint/js";
//#region src/configs/base.ts
function getBaseConfig(options) {
const { configs: { vue, base: { overrides } }, global: { globals: { node, worker, browser, commonjs, webextension, serviceworker, custom: userGlobals } } } = options;
const baseConfig = {
name: "shayanthenerd/base",
files: [globs.src, vue ? globs.vue : ""],
extends: [javascriptESLint.configs.recommended],
languageOptions: {
parser: typescriptESLint.parser,
parserOptions: {
ecmaVersion: "latest",
ecmaFeatures: {
jsx: true,
impliedStrict: true
}
},
globals: {
...globals.builtin,
...globals.es2026,
...commonjs ? globals.commonjs : {},
...node ? globals.node : {},
...node ? globals.nodeBuiltin : {},
...browser ? globals.browser : {},
...worker ? globals.worker : {},
...serviceworker ? globals.serviceworker : {},
...webextension ? globals.webextensions : {},
...userGlobals
}
},
rules: getJavaScriptRules(options)
};
return mergeConfigs(baseConfig, overrides);
}
//#endregion
export { getBaseConfig };