Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
import { defineConfig } from "eslint/config"
import pluginVue from "eslint-plugin-vue"
// import { defineConfigWithVueTs, vueTsConfigs } from "@vue/eslint-config-typescript"
// import defineConfigWithVueTs from "@vue/eslint-config-typescript"
import js from "@eslint/js"
import eslint from "@eslint/js"
import globals from "globals"
import tseslint from "typescript-eslint"

// General JavaScript configuration
const jsConfig = {
files: ["docs/.vitepress/theme/**/*.{js,mjs,cjs}"],
languageOptions: {
ecmaVersion: "latest",
globals: {
...globals.browser,
...globals.node,
},
parserOptions: {
ecmaVersion: "latest",
},
},
plugins: { js },
rules: {
"brace-style": ["error", "1tbs"],
curly: ["warn", "all"],
"max-len": [
"error",
{
code: 180,
ignorePattern: ' d=".+"',
ignoreTemplateLiterals: true,
ignoreUrls: true,
},
],
"no-debugger": "error",
"no-param-reassign": "off",
"no-prototype-builtins": "off",
"sort-vars": "error",
},
}

// Vue-specific configuration
const vueConfig = {
files: ["docs/.vitepress/theme/**/*.vue"],
// plugins: { vue: pluginVue },
plugins: {
"@typescript-eslint": tseslint.plugin,
},
languageOptions: {
ecmaVersion: "latest",
globals: {
...globals.browser,
...globals.node,
},
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
},
rules: {
// Vue-specific rules
"vue/multi-word-component-names": "off",
"vue/valid-v-slot": ["error", { allowModifiers: true }],
"vue/v-slot-style": [
"error",
{
atComponent: "v-slot",
default: "v-slot",
named: "longform",
},
],
// NOTE vue/no-deprecated-v-bind-sync is required for Vue 2 - remove if upgrading to Vue 3
"vue/no-deprecated-v-bind-sync": ["warn"],
},
}

// export default defineConfigWithVueTs([
export default defineConfig([
{
files: ["docs/.vitepress/theme/**/*.{js,mjs,cjs,ts,vue}"],
},

eslint.configs.recommended,

// tseslint.configs.recommended,

// Apply the recommended Vue 3 rules (essential, strongly-recommended, or recommended)
// ...pluginVue.configs["flat/recommended"],
...pluginVue.configs["flat/essential"],

// Base JavaScript configuration
jsConfig,

// Vue configuration
vueConfig,
// {
// // files: ["docs/.vitepress/theme/**/*.{js,mjs,vue}"],
// // files: ["**/*.{js,mjs,vue}"],

// // Specific settings for processing Vue files
// languageOptions: {
// ecmaVersion: "latest",
// sourceType: "module",
// globals: {
// ...globals.browser,
// ...globals.node,
// },
// // parserOptions: {
// // parser: "@babel/eslint-parser", // Use Babel parser for JavaScript within <script>
// // extraFileExtensions: [".vue"],
// // },
// parserOptions: {
// // ecmaVersion: 2022,
// sourceType: "module",
// },
// },

// rules: {
// // Override or add project-specific rules here
// "vue/no-unused-vars": "error",
// "vue/valid-v-slot": ["error", { allowModifiers: true }],
// "vue/v-slot-style": [
// "error",
// {
// atComponent: "v-slot",
// default: "v-slot",
// named: "longform",
// },
// ],
// // "vue/multi-word-component-names": "warn",
// "vue/multi-word-component-names": "off",
// "no-console": "warn",
// },
// },
{
// Note: there should be no other properties in this object
ignores: ["node_modules/**/*", "**/build/**/*.js", "**/cache/deps/"],
},
])
10 changes: 8 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
{
"devDependencies": {
"@babel/eslint-parser": "^7.28.6",
"@vitejs/plugin-vue": "^6.0.1",
"@vitejs/plugin-vue-jsx": "^5.1.1",
"@vue/eslint-config-typescript": "^14.6.0",
"@vue/test-utils": "^2.4.6",
"eslint": "^9.35.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-vue": "^10.7.0",
"happy-dom": "^19.0.2",
"markdown-it-container": "^4.0.0",
"prettier": "^3.6.2",
"typescript": "^5.9.3",
"typescript-eslint": "^8.54.0",
"vite-plugin-vuetify": "^2.1.2",
"vitepress": "^1.6.4",
"vitest": "^3.2.4",
"vue": "^3.5.21",
"vue-eslint-parser": "^10.2.0",
"vue-router": "^4.5.1",
"vuetify": "^3.10.1"
},
Expand All @@ -21,8 +27,8 @@
"build": "vitepress build docs",
"preview": "vitepress preview docs",
"test": "vitest",
"lint": "eslint .",
"lint:fix": "eslint --fix .",
"lint": "eslint",
"lint:fix": "eslint --fix",
"shell": "node"
},
"dependencies": {
Expand Down
Loading