@yamato-daiwa/style_guides
Version:
The guidelines for ESLint and Pug.
146 lines (115 loc) • 4.74 kB
JavaScript
/* ─── Plugins ────────────────────────────────────────────────────────────────────────────────────────────────────── */
const stylisticPlugin = require("@stylistic/eslint-plugin");
const nodePlugin = require("eslint-plugin-n");
const commentsPlugin = require("@eslint-community/eslint-plugin-eslint-comments");
const importPlugin = require("eslint-plugin-import");
const vuePlugin = require("eslint-plugin-vue");
const reactPlugin = require("eslint-plugin-react");
const typeScriptPlugin = require("@typescript-eslint/eslint-plugin");
/* ─── Rules ──────────────────────────────────────────────────────────────────────────────────────────────────────── */
const ecmaScriptBasicRules = require("./Rules/ECMA_ScriptBasicRules");
const nodeJS_Rules = require("./Rules/NodeJS_Rules");
const commentsRules = require("./Rules/CommentsRules");
const typeScriptRules = require("./Rules/TypeScriptRules");
const reactRules = require("./Rules/ReactRules");
const vueRules = require("./Rules/VueRules");
/* ─── Overridings ────────────────────────────────────────────────────────────────────────────────────────────────── */
const overridingsForTestingFiles = require("./Overridings/OverridingsForTestingFiles");
const overridingsForESLintPresetFiles = require("./Overridings/OverridingsForESLintPresetFiles");
/* ─── Parsers ────────────────────────────────────────────────────────────────────────────────────────────────────── */
const typeScriptESLintParser = require("@typescript-eslint/parser");
const vueESLintParser = require("vue-eslint-parser");
/* ─── Native ─────────────────────────────────────────────────────────────────────────────────────────────────────── */
const globals = require("globals");
module.exports = [
{
languageOptions: {
globals: {
...globals.browser,
...globals.node,
...globals.mocha
}
},
plugins: {
"@stylistic": stylisticPlugin,
n: nodePlugin,
"@eslint-community/eslint-comments": commentsPlugin,
import: importPlugin
},
rules: {
...ecmaScriptBasicRules,
...nodeJS_Rules,
...commentsRules
}
},
{
files: [ "**/*.ts" ],
languageOptions: {
parser: typeScriptESLintParser,
parserOptions: {
project: "tsconfig.json"
},
sourceType: "module",
globals: {
...globals.browser,
...globals.node,
...globals.mocha,
BufferEncoding: "readonly"
}
},
plugins: {
"@typescript-eslint": typeScriptPlugin
},
rules: typeScriptRules
},
{
files: [ "**/*.vue", "**/*.vue.ts" ],
languageOptions: {
parser: vueESLintParser,
parserOptions: {
parser: "@typescript-eslint/parser",
sourceType: "module"
}
},
plugins: {
vue: vuePlugin
},
processor: "vue/vue",
rules: vueRules
},
{
files: [ "**/*.tsx" ],
languageOptions: {
parser: typeScriptESLintParser,
parserOptions: {
ecmaFeatures: { jsx: true }
}
},
plugins: {
react: reactPlugin
},
rules: reactRules
},
{
files: [ "**/*.jsx" ],
plugins: {
react: reactPlugin
},
rules: reactRules
},
{
files: [ "**/*.test.ts" ],
rules: overridingsForTestingFiles
},
{
files: [
"eslint.config.js",
"eslint.config.mjs",
"eslint.config.cjs",
"eslint.config.ts",
"eslint.config.mts",
"eslint.config.cts"
],
rules: overridingsForESLintPresetFiles
}
];