diff --git a/eslint.config.mjs b/eslint.config.mjs index ec114426a..4174f7be1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,11 +1,16 @@ // @ts-check import js from '@eslint/js' -import vue from 'eslint-plugin-vue' +import { configureVueProject, defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' +import pluginVue from 'eslint-plugin-vue' import globals from 'globals' -import tseslint from 'typescript-eslint' -import vueParser from 'vue-eslint-parser' -export default tseslint.config( +configureVueProject({ + tsSyntaxInTemplates: true, + scriptLangs: ['ts', 'js', 'tsx', 'jsx'], + rootDir: import.meta.dirname +}) + +export default defineConfigWithVueTs( { ignores: [ '.vscode', @@ -17,37 +22,13 @@ export default tseslint.config( '**/temp', 'mockServer', 'packages/vue-generator/**/output/**/*', + 'packages/vue-generator/test/**/*', 'packages/build/vite-plugin-meta-comments/src/test/code/**/*' ] }, js.configs.recommended, - ...tseslint.configs.recommended, - ...vue.configs['flat/essential'], - { - files: ['**/*.{js,jsx,ts,tsx}'], - languageOptions: { - parser: tseslint.parser, - ecmaVersion: 'latest', - sourceType: 'module' - } - }, - { - files: ['**/*.vue'], - languageOptions: { - parser: vueParser, - parserOptions: { - parser: tseslint.parser, - ecmaVersion: 'latest', - sourceType: 'module', - ecmaFeatures: { - jsx: true - } - } - }, - plugins: { - vue - } - }, + pluginVue.configs['flat/essential'], + vueTsConfigs.recommended, { files: ['**/*.{js,jsx,ts,tsx,vue}'], languageOptions: { @@ -56,7 +37,7 @@ export default tseslint.config( ...globals.worker, ...globals.node, ...globals.jest - } + }, }, rules: { 'no-console': 'error', @@ -64,6 +45,7 @@ export default tseslint.config( 'no-eq-null': 'error', 'space-before-function-paren': 'off', 'vue/multi-word-component-names': 'off', + '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-use-before-define': 'error', '@typescript-eslint/no-unused-vars': [ 'error', @@ -76,7 +58,7 @@ export default tseslint.config( } }, { - files: ['scripts/**/*.js', 'packages/vue-generator/test/**/*'], + files: ['scripts/**/*'], rules: { 'no-console': 'off', '@typescript-eslint/no-require-imports': 'off' diff --git a/package.json b/package.json index 61cb50285..f81369f15 100644 --- a/package.json +++ b/package.json @@ -42,9 +42,7 @@ "mysql": "^2.18.1", "picocolors": "^1.0.0", "prettier": "^2.7.1", - "typescript": "~5.4.5", - "typescript-eslint": "^8.24.1", - "vue-eslint-parser": "^9.4.3" + "typescript": "~5.4.5" }, "browserslist": [ "> 1%", diff --git a/tsconfig.app.json b/tsconfig.app.json index 53252d90b..3d6cb0710 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -7,7 +7,73 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + + "baseUrl": "./", + "jsx": "react-jsx", + "paths": { + "@/*": ["packages/*"], + "@opentiny/tiny-engine": ["packages/design-core/index.js"], + "@opentiny/tiny-engine-meta-register": ["packages/register/src/index.js"], + "@opentiny/tiny-engine-canvas": ["packages/canvas/src/index.js"], + "@opentiny/tiny-engine-plugin-materials": ["packages/plugins/materials/index"], + "@opentiny/tiny-engine-plugin-state": ["packages/plugins/state/index"], + "@opentiny/tiny-engine-plugin-script": ["packages/plugins/script/index"], + "@opentiny/tiny-engine-plugin-tree": ["packages/plugins/tree/index"], + "@opentiny/tiny-engine-plugin-help": ["packages/plugins/help/index"], + "@opentiny/tiny-engine-plugin-schema": ["packages/plugins/schema/index"], + "@opentiny/tiny-engine-plugin-page": ["packages/plugins/page/index"], + "@opentiny/tiny-engine-plugin-i18n": ["packages/plugins/i18n/index"], + "@opentiny/tiny-engine-plugin-bridge": ["packages/plugins/bridge/index"], + "@opentiny/tiny-engine-setting-events": ["packages/settings/events/index"], + "@opentiny/tiny-engine-setting-props": ["packages/settings/props/index"], + "@opentiny/tiny-engine-common": ["packages/common/index"], + "@opentiny/tiny-engine-setting-styles": ["packages/settings/styles/index"], + "@opentiny/tiny-engine-toolbar-breadcrumb": ["packages/toolbars/breadcrumb/index"], + "@opentiny/tiny-engine-toolbar-fullscreen": ["packages/toolbars/fullscreen/index"], + "@opentiny/tiny-engine-toolbar-lang": ["packages/toolbars/lang/index"], + "@opentiny/tiny-engine-toolbar-view-setting": ["packages/toolbars/view-setting/index"], + "@opentiny/tiny-engine-toolbar-layout": ["packages/toolbars/layout/index"], + "@opentiny/tiny-engine-toolbar-lock": ["packages/toolbars/lock/index"], + "@opentiny/tiny-engine-toolbar-logo": ["packages/toolbars/logo/index"], + "@opentiny/tiny-engine-toolbar-media": ["packages/toolbars/media/index"], + "@opentiny/tiny-engine-toolbar-preview": ["packages/toolbars/preview/index"], + "@opentiny/tiny-engine-toolbar-generate-code": ["packages/toolbars/generate-code/index"], + "@opentiny/tiny-engine-toolbar-clean": ["packages/toolbars/clean/index"], + "@opentiny/tiny-engine-toolbar-theme-switch": ["packages/toolbars/themeSwitch/index"], + "@opentiny/tiny-engine-toolbar-save": ["packages/toolbars/save/index"], + "tiny-engine-canvas": ["packages/canvas/index"], + "@opentiny/tiny-engine-svgs": ["packages/svgs/index"], + "@opentiny/tiny-engine-plugin-materials/*": ["packages/plugins/materials/*"], + "@opentiny/tiny-engine-plugin-state/*": ["packages/plugins/state/*"], + "@opentiny/tiny-engine-plugin-script/*": ["packages/plugins/script/*"], + "@opentiny/tiny-engine-plugin-tree/*": ["packages/plugins/tree/*"], + "@opentiny/tiny-engine-plugin-help/*": ["packages/plugins/help/*"], + "@opentiny/tiny-engine-plugin-schema/*": ["packages/plugins/schema/*"], + "@opentiny/tiny-engine-plugin-page/*": ["packages/plugins/page/*"], + "@opentiny/tiny-engine-plugin-i18n/*": ["packages/plugins/i18n/*"], + "@opentiny/tiny-engine-plugin-bridge/*": ["packages/plugins/bridge/*"], + "@opentiny/tiny-engine-setting-events/*": ["packages/settings/events/*"], + "@opentiny/tiny-engine-setting-props/*": ["packages/settings/props/*"], + "@opentiny/tiny-engine-common/*": ["packages/common/*"], + "@opentiny/tiny-engine-setting-styles/*": ["packages/settings/styles/*"], + "@opentiny/tiny-engine-toolbar-breadcrumb/*": ["packages/toolbars/breadcrumb/*"], + "@opentiny/tiny-engine-toolbar-fullscreen/*": ["packages/toolbars/fullscreen/*"], + "@opentiny/tiny-engine-toolbar-lang/*": ["packages/toolbars/lang/*"], + "@opentiny/tiny-engine-toolbar-view-setting/*": ["packages/toolbars/view-setting/*"], + "@opentiny/tiny-engine-toolbar-layout/*": ["packages/toolbars/layout/*"], + "@opentiny/tiny-engine-toolbar-lock/*": ["packages/toolbars/lock/*"], + "@opentiny/tiny-engine-toolbar-logo/*": ["packages/toolbars/logo/*"], + "@opentiny/tiny-engine-toolbar-media/*": ["packages/toolbars/media/*"], + "@opentiny/tiny-engine-toolbar-preview/*": ["packages/toolbars/preview/*"], + "@opentiny/tiny-engine-toolbar-clean/*": ["packages/toolbars/clean/*"], + "@opentiny/tiny-engine-toolbar-theme-switch/*": ["packages/toolbars/themeSwitch/*"], + "@opentiny/tiny-engine-toolbar-save/*": ["packages/toolbars/save/*"], + "@opentiny/tiny-engine-svgs/*": ["packages/svgs/*"], + "@opentiny/tiny-engine-utils": ["packages/utils/src/index.js"], + "@opentiny/tiny-engine-webcomponent-core": ["packages/webcomponent/src/lib"], + "@opentiny/tiny-engine-i18n-host": ["packages/i18n/src/lib"] + } }, "include": ["packages/**/*"], "exclude": ["node_modules", "**/node_modules", "dist", "**/dist"]