| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import js from "@eslint/js";
- import pluginVue from "eslint-plugin-vue";
- import globals from "globals";
- export default [
- { ignores: ["dist/**", "node_modules/**"] },
- js.configs.recommended,
- ...pluginVue.configs["flat/recommended"],
- {
- files: ["**/*.{js,vue}"],
- languageOptions: {
- ecmaVersion: "latest",
- sourceType: "module",
- globals: { ...globals.browser }
- },
- rules: {
- // o que esta config existe para pegar: o `npm run build` passa com identificador
- // inexistente no template, e não havia nada apontando símbolo morto
- "vue/no-undef-properties": "error",
- "vue/no-unused-properties": ["error", { groups: ["props", "setup"] }],
- "no-unused-vars": ["error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }],
- // catch vazio é o idioma correto ao redor de localStorage/JSON.parse, que podem
- // falhar em navegação privada e não têm tratamento útil
- "no-empty": ["error", { allowEmptyCatch: true }],
- // o design system tem componentes de uma palavra por convenção (Spinner)
- "vue/multi-word-component-names": "off",
- // formatação fica com o editor; aqui só o que indica defeito
- "vue/max-attributes-per-line": "off",
- "vue/singleline-html-element-content-newline": "off",
- "vue/html-self-closing": "off",
- "vue/html-indent": "off",
- "vue/html-closing-bracket-newline": "off",
- "vue/attributes-order": "off",
- "vue/first-attribute-linebreak": "off",
- "vue/multiline-html-element-content-newline": "off"
- }
- },
- {
- files: ["vite.config.js", "eslint.config.js", "scripts/**"],
- languageOptions: { globals: { ...globals.node } }
- }
- ];
|