diff --git a/.changeset/slimy-wombats-peel.md b/.changeset/slimy-wombats-peel.md new file mode 100644 index 00000000..316548be --- /dev/null +++ b/.changeset/slimy-wombats-peel.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +fix(eslint): generated import order are now sorted alphabetically diff --git a/package.json b/package.json index 391cd4f3..059e4299 100644 --- a/package.json +++ b/package.json @@ -46,4 +46,4 @@ "esbuild" ] } -} +} \ No newline at end of file diff --git a/packages/addons/eslint/index.ts b/packages/addons/eslint/index.ts index 6f93778d..82492ae3 100644 --- a/packages/addons/eslint/index.ts +++ b/packages/addons/eslint/index.ts @@ -1,4 +1,3 @@ -import { addEslintConfigPrettier } from '../common.ts'; import { defineAddon, log } from '@sveltejs/cli-core'; import { array, @@ -10,6 +9,7 @@ import { type AstTypes } from '@sveltejs/cli-core/js'; import { parseJson, parseScript } from '@sveltejs/cli-core/parsers'; +import { addEslintConfigPrettier } from '../common.ts'; export default defineAddon({ id: 'eslint', @@ -164,8 +164,8 @@ export default defineAddon({ imports.addNamed(ast, 'node:url', { fileURLToPath: 'fileURLToPath' }); imports.addDefault(ast, 'globals', 'globals'); imports.addDefault(ast, 'eslint-plugin-svelte', 'svelte'); - imports.addNamed(ast, '@eslint/compat', { includeIgnoreFile: 'includeIgnoreFile' }); imports.addDefault(ast, '@eslint/js', 'js'); + imports.addNamed(ast, '@eslint/compat', { includeIgnoreFile: 'includeIgnoreFile' }); return generateCode(); }); diff --git a/packages/core/tests/js/imports/reverse-order/output.ts b/packages/core/tests/js/imports/reverse-order/output.ts new file mode 100644 index 00000000..8f1966b8 --- /dev/null +++ b/packages/core/tests/js/imports/reverse-order/output.ts @@ -0,0 +1,5 @@ +import * as foo from 'p1'; +import * as bar from './p2'; +import { namedTwo } from 'p3'; +import 'p4'; +import MyPackage from 'p5'; diff --git a/packages/core/tests/js/imports/reverse-order/run.ts b/packages/core/tests/js/imports/reverse-order/run.ts new file mode 100644 index 00000000..d786161b --- /dev/null +++ b/packages/core/tests/js/imports/reverse-order/run.ts @@ -0,0 +1,16 @@ +import { imports, type AstTypes } from '@sveltejs/cli-core/js'; + +export function run(ast: AstTypes.Program): void { + // imports should be added HERE in the reverse order + // so that the imports are added from the top (unshift) + imports.addDefault(ast, 'p5', 'MyPackage'); + imports.addEmpty(ast, 'p4'); + imports.addNamed(ast, 'p3', { namedTwo: 'namedTwo' }, false); + imports.addNamespace(ast, './p2', 'bar'); + imports.addNamespace(ast, 'p1', 'foo'); + + // adding the same import twice should not produce two imports + imports.addNamespace(ast, './p2', 'bar'); + // adding the same import for the 3rd time. Only the first one should be kept. + imports.addNamespace(ast, './p2', 'bar'); +}