56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
/** @type {import("eslint").Linter.Config} */
|
|
const config = {
|
|
root: true,
|
|
parser: "@typescript-eslint/parser",
|
|
plugins: ["isaacscript", "import"],
|
|
extends: [
|
|
"plugin:@typescript-eslint/recommended-type-checked",
|
|
"plugin:@typescript-eslint/stylistic-type-checked",
|
|
"plugin:prettier/recommended",
|
|
],
|
|
parserOptions: {
|
|
ecmaVersion: "latest",
|
|
sourceType: "module",
|
|
tsconfigRootDir: __dirname,
|
|
project: [
|
|
"./tsconfig.json",
|
|
"./cli/tsconfig.eslint.json", // separate eslint config for the CLI since we want to lint and typecheck differently due to template files
|
|
"./upgrade/tsconfig.json",
|
|
"./www/tsconfig.json",
|
|
],
|
|
},
|
|
overrides: [
|
|
// Template files don't have reliable type information
|
|
{
|
|
files: ["./cli/template/**/*.{ts,tsx}"],
|
|
extends: ["plugin:@typescript-eslint/disable-type-checked"],
|
|
},
|
|
],
|
|
rules: {
|
|
// These off/not-configured-the-way-we-want lint rules we like & opt into
|
|
"@typescript-eslint/no-explicit-any": "error",
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{ argsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_" },
|
|
],
|
|
"@typescript-eslint/consistent-type-imports": [
|
|
"error",
|
|
{ prefer: "type-imports", fixStyle: "inline-type-imports" },
|
|
],
|
|
"import/consistent-type-specifier-style": ["error", "prefer-inline"],
|
|
|
|
// For educational purposes we format our comments/jsdoc nicely
|
|
"isaacscript/complete-sentences-jsdoc": "warn",
|
|
"isaacscript/format-jsdoc-comments": "warn",
|
|
|
|
// These lint rules don't make sense for us but are enabled in the preset configs
|
|
"@typescript-eslint/no-confusing-void-expression": "off",
|
|
"@typescript-eslint/restrict-template-expressions": "off",
|
|
|
|
// This rule doesn't seem to be working properly
|
|
"@typescript-eslint/prefer-nullish-coalescing": "off",
|
|
},
|
|
};
|
|
|
|
module.exports = config;
|