Skip to content

Commit

Permalink
refactor: refactor to typescript and add eslint 9
Browse files Browse the repository at this point in the history
  • Loading branch information
gene9831 committed Feb 25, 2025
1 parent 8d51ad4 commit e03744a
Show file tree
Hide file tree
Showing 16 changed files with 197 additions and 52 deletions.
10 changes: 0 additions & 10 deletions .eslintignore

This file was deleted.

31 changes: 0 additions & 31 deletions .eslintrc.js

This file was deleted.

75 changes: 75 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// @ts-check
import js from '@eslint/js'
import { configureVueProject, defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
import pluginVue from 'eslint-plugin-vue'
import globals from 'globals'

configureVueProject({
tsSyntaxInTemplates: true,
scriptLangs: ['ts', 'js', 'tsx', 'jsx'],
rootDir: import.meta.dirname
})

export default defineConfigWithVueTs(
{
ignores: [
'.vscode',
'**/dist',
'**/public',
'**/package-lock.json',
'**/node_modules/**/*',
'**/tmp',
'**/temp',
'mockServer',
'packages/vue-generator/**/output/**/*',
'packages/vue-generator/test/**/*',
'packages/build/vite-plugin-meta-comments/src/test/code/**/*'
]
},
js.configs.recommended,
pluginVue.configs['flat/essential'],
vueTsConfigs.recommended,
{
files: ['**/*.{js,jsx,ts,tsx,vue}'],
languageOptions: {
globals: {
...globals.browser,
...globals.worker,
...globals.node,
...globals.jest
}
},
rules: {
'no-console': 'error',
'no-debugger': 'error',
'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',
{
ignoreRestSiblings: true,
varsIgnorePattern: '^_',
argsIgnorePattern: '^_'
}
]
}
},
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
parserOptions: {
project: './tsconfig.app.json'
}
}
},
{
files: ['scripts/**/*'],
rules: {
'no-console': 'off',
'@typescript-eslint/no-require-imports': 'off'
}
}
)
14 changes: 8 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"build:alpha": "pnpm --filter designer-demo build:alpha",
"build:prod": "pnpm --filter designer-demo build",
"buildComponentSchemas": "node scripts/buildComponentSchemas.js",
"lint": "eslint . --ext .js,.vue,.jsx --fix",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx,.vue --fix",
"format": "prettier --write **/*{.vue,.js,.ts,.html,.json}",
"prepare": "node -e \"if(require('fs').existsSync('.git')){process.exit(1)}\" || husky install",
"pub:premajor": "pnpm run build:plugin && pnpm run build:alpha && pnpm lerna version premajor --preid beta --no-push --yes && lerna publish from-package --pre-dist-tag beta --yes",
Expand All @@ -23,24 +23,26 @@
"updateTemplate": "node ./scripts/updateTemplate.mjs"
},
"devDependencies": {
"@babel/eslint-parser": "^7.21.3",
"@eslint/js": "^8.57.1",
"@types/node": "^18.0.0",
"@vue/eslint-config-typescript": "^11.0.3",
"@vue/eslint-config-typescript": "^14.4.0",
"@vue/tsconfig": "^0.7.0",
"chokidar": "^3.5.3",
"concurrently": "^8.2.0",
"cross-env": "^7.0.3",
"dotenv": "^16.3.1",
"eslint": "^8.38.0",
"eslint-plugin-vue": "^8.0.0",
"eslint": "^9.21.0",
"eslint-plugin-vue": "^9.32.0",
"fast-glob": "^3.3.2",
"fs-extra": "^10.1.0",
"globals": "^16.0.0",
"husky": "^8.0.0",
"lerna": "^7.2.0",
"lint-staged": "^13.2.0",
"mysql": "^2.18.1",
"picocolors": "^1.0.0",
"prettier": "^2.7.1",
"vue-eslint-parser": "^8.0.1"
"typescript": "~5.4.5"
},
"browserslist": [
"> 1%",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const getDevAlias = (useSourceAlias) => {
'@opentiny/tiny-engine-plugin-datasource': path.resolve(basePath, 'packages/plugins/datasource/index.js'),
'@opentiny/tiny-engine-plugin-script': path.resolve(basePath, 'packages/plugins/script/index.js'),
'@opentiny/tiny-engine-plugin-tree': path.resolve(basePath, 'packages/plugins/tree/index.js'),
'@opentiny/tiny-engine-plugin-help': path.resolve(basePath, 'packages/plugins/help/index.js'),
'@opentiny/tiny-engine-plugin-help': path.resolve(basePath, 'packages/plugins/help/index.ts'),
'@opentiny/tiny-engine-plugin-schema': path.resolve(basePath, 'packages/plugins/schema/index.js'),
'@opentiny/tiny-engine-plugin-page': path.resolve(basePath, 'packages/plugins/page/index.js'),
'@opentiny/tiny-engine-plugin-i18n': path.resolve(basePath, 'packages/plugins/i18n/index.js'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
*/

import metaData from './meta.js'
import metaData from './meta'
import { HelpService } from './src/composable'
import './src/styles/vars.less'

Expand Down
File renamed without changes.
Empty file removed packages/plugins/help/mock/test.js
Empty file.
2 changes: 1 addition & 1 deletion packages/plugins/help/src/HelpIcon.vue
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
</div>
</template>

<script>
<script lang="ts">
import { reactive, onMounted, ref } from 'vue'
import { Guide, Popover } from '@opentiny/vue'
import { IconFilletExternalLink } from '@opentiny/vue-icon'
Expand Down
Empty file removed packages/plugins/help/test/test.js
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ export default defineConfig({
resolve: {},
build: {
lib: {
entry: path.resolve(__dirname, './index.js'),
entry: path.resolve(__dirname, './index.ts'),
name: 'plugin-help',
fileName: () => 'index.js',
fileName: (_format, entryName) => `${entryName}.js`,
formats: ['es']
},
rollupOptions: {
Expand Down
81 changes: 81 additions & 0 deletions tsconfig.app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
{
"extends": "@vue/tsconfig/tsconfig.dom.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",

/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,

"allowJs": 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"]
}
4 changes: 4 additions & 0 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"files": [],
"references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }]
}
24 changes: 24 additions & 0 deletions tsconfig.node.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"target": "ES2022",
"lib": ["ES2023"],
"module": "ESNext",
"skipLibCheck": true,

/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,

/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["vite.config.ts", "**/vite.config.ts"]
}

0 comments on commit e03744a

Please sign in to comment.