diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 63a8d282..e75311e0 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -8,6 +8,7 @@ module.exports = defineConfig({ 'plugin:node/recommended', 'plugin:@typescript-eslint/recommended' ], + plugins: ['import'], parser: '@typescript-eslint/parser', parserOptions: { sourceType: 'module', @@ -86,6 +87,18 @@ module.exports = defineConfig({ '@typescript-eslint/consistent-type-imports': [ 'error', { prefer: 'type-imports' } + ], + + 'import/order': 'error', + 'sort-imports': [ + 'error', + { + ignoreCase: false, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + allowSeparatedGroups: false + } ] }, overrides: [ diff --git a/package.json b/package.json index 62a66770..9904f281 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "scripts": { "preinstall": "npx only-allow pnpm", "format": "prettier --write .", - "lint": "eslint packages/*/{src,types}/**", + "lint": "eslint packages/*/{src,types}/** playground/**/__tests__/**/*.*", "test": "run-s test-unit test-serve test-build", "test-serve": "vitest run -c vitest.config.e2e.ts", "test-build": "cross-env VITE_TEST_BUILD=1 vitest run -c vitest.config.e2e.ts", @@ -48,6 +48,7 @@ "esbuild": "^0.14.38", "eslint": "^8.15.0", "eslint-define-config": "^1.4.0", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", "execa": "^5.1.1", "fs-extra": "^10.1.0", @@ -80,10 +81,13 @@ "prettier --write --ignore-unknown" ], "packages/*/{src,types}/**/*.ts": [ - "eslint --ext .ts" + "eslint --fix" ], "packages/**/*.d.ts": [ - "eslint --ext .ts" + "eslint --fix" + ], + "playground/**/__tests__/**/*.ts": [ + "eslint --fix" ] }, "packageManager": "pnpm@6.32.11", diff --git a/packages/plugin-vue/src/handleHotUpdate.ts b/packages/plugin-vue/src/handleHotUpdate.ts index 7c2a7ef7..fbf7d2c1 100644 --- a/packages/plugin-vue/src/handleHotUpdate.ts +++ b/packages/plugin-vue/src/handleHotUpdate.ts @@ -1,12 +1,12 @@ import _debug from 'debug' import type { SFCBlock, SFCDescriptor } from 'vue/compiler-sfc' +import type { HmrContext, ModuleNode } from 'vite' import { createDescriptor, getDescriptor, setPrevDescriptor } from './utils/descriptorCache' import { getResolvedScript, setResolvedScript } from './script' -import type { ModuleNode, HmrContext } from 'vite' import type { ResolvedOptions } from '.' const debug = _debug('vite:hmr') diff --git a/packages/plugin-vue/src/main.ts b/packages/plugin-vue/src/main.ts index ccc700f1..8fa01e49 100644 --- a/packages/plugin-vue/src/main.ts +++ b/packages/plugin-vue/src/main.ts @@ -1,21 +1,21 @@ import path from 'path' import type { SFCBlock, SFCDescriptor } from 'vue/compiler-sfc' -import type { ResolvedOptions } from '.' +import type { PluginContext, SourceMap, TransformPluginContext } from 'rollup' +import { normalizePath } from '@rollup/pluginutils' +import type { RawSourceMap } from 'source-map' +import { SourceMapConsumer, SourceMapGenerator } from 'source-map' +import { transformWithEsbuild } from 'vite' import { createDescriptor, getPrevDescriptor, setSrcDescriptor } from './utils/descriptorCache' -import type { PluginContext, SourceMap, TransformPluginContext } from 'rollup' -import { normalizePath } from '@rollup/pluginutils' -import { resolveScript, isUseInlineTemplate } from './script' +import { isUseInlineTemplate, resolveScript } from './script' import { transformTemplateInMain } from './template' -import { isOnlyTemplateChanged, isEqualBlock } from './handleHotUpdate' -import type { RawSourceMap } from 'source-map' -import { SourceMapConsumer, SourceMapGenerator } from 'source-map' +import { isEqualBlock, isOnlyTemplateChanged } from './handleHotUpdate' import { createRollupError } from './utils/error' -import { transformWithEsbuild } from 'vite' import { EXPORT_HELPER_ID } from './helper' +import type { ResolvedOptions } from '.' // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export async function transformMain( diff --git a/packages/plugin-vue/src/script.ts b/packages/plugin-vue/src/script.ts index 93610dcf..f5d488c2 100644 --- a/packages/plugin-vue/src/script.ts +++ b/packages/plugin-vue/src/script.ts @@ -1,6 +1,6 @@ import type { SFCDescriptor, SFCScriptBlock } from 'vue/compiler-sfc' -import type { ResolvedOptions } from '.' import { resolveTemplateCompilerOptions } from './template' +import type { ResolvedOptions } from '.' // ssr and non ssr builds would output different script content const clientCache = new WeakMap() diff --git a/packages/plugin-vue/src/style.ts b/packages/plugin-vue/src/style.ts index cab75791..aa124de1 100644 --- a/packages/plugin-vue/src/style.ts +++ b/packages/plugin-vue/src/style.ts @@ -1,8 +1,8 @@ import type { SFCDescriptor } from 'vue/compiler-sfc' import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' -import type { ResolvedOptions } from '.' import type { RawSourceMap } from 'source-map' import { formatPostcssSourceMap } from 'vite' +import type { ResolvedOptions } from '.' // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export async function transformStyle( diff --git a/packages/plugin-vue/src/template.ts b/packages/plugin-vue/src/template.ts index c7eed901..c44da9e6 100644 --- a/packages/plugin-vue/src/template.ts +++ b/packages/plugin-vue/src/template.ts @@ -1,15 +1,15 @@ import path from 'path' import slash from 'slash' import type { + CompilerOptions, SFCDescriptor, SFCTemplateCompileOptions, - SFCTemplateCompileResults, - CompilerOptions + SFCTemplateCompileResults } from 'vue/compiler-sfc' import type { PluginContext, TransformPluginContext } from 'rollup' -import type { ResolvedOptions } from '.' import { getResolvedScript } from './script' import { createRollupError } from './utils/error' +import type { ResolvedOptions } from '.' // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export async function transformTemplateAsModule(