diff --git a/.changeset/beige-peas-swim.md b/.changeset/beige-peas-swim.md new file mode 100644 index 000000000..587319730 --- /dev/null +++ b/.changeset/beige-peas-swim.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +feat: respect `.gitignore` in `eslint` add-on diff --git a/packages/addons/eslint/index.ts b/packages/addons/eslint/index.ts index db6e4496a..1fe9dd8b9 100644 --- a/packages/addons/eslint/index.ts +++ b/packages/addons/eslint/index.ts @@ -21,6 +21,7 @@ export default defineAddon({ const prettierInstalled = Boolean(dependencyVersion('prettier')); sv.devDependency('eslint', '^9.7.0'); + sv.devDependency('@eslint/compat', '^1.2.3'); sv.devDependency('globals', '^15.0.0'); sv.devDependency('eslint-plugin-svelte', '^2.36.0'); @@ -56,6 +57,14 @@ export default defineAddon({ AstKinds.ExpressionKind | AstTypes.SpreadElement | AstTypes.ObjectExpression > = []; + const gitIgnorePathStatement = common.statementFromString( + '\nconst gitignorePath = fileURLToPath(new URL("./.gitignore", import.meta.url));' + ); + common.addStatement(ast, gitIgnorePathStatement); + + const ignoresConfig = common.expressionFromString('includeIgnoreFile(gitignorePath)'); + eslintConfigs.push(ignoresConfig); + const jsConfig = common.expressionFromString('js.configs.recommended'); eslintConfigs.push(jsConfig); @@ -92,11 +101,6 @@ export default defineAddon({ eslintConfigs.push(svelteTSParserConfig); } - const ignoresConfig = object.create({ - ignores: common.expressionFromString('["build/", ".svelte-kit/", "dist/"]') - }); - eslintConfigs.push(ignoresConfig); - let exportExpression: AstTypes.ArrayExpression | AstTypes.CallExpression; if (typescript) { const tsConfigCall = functions.call('ts.config', []); @@ -121,8 +125,10 @@ export default defineAddon({ // imports if (typescript) imports.addDefault(ast, 'typescript-eslint', 'ts'); + 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'); return generateCode(); diff --git a/packages/create/templates/demo/.gitignore b/packages/create/templates/demo/.gitignore index 79518f716..3b462cb0c 100644 --- a/packages/create/templates/demo/.gitignore +++ b/packages/create/templates/demo/.gitignore @@ -3,6 +3,8 @@ node_modules # Output .output .vercel +.netlify +.wrangler /.svelte-kit /build diff --git a/packages/create/templates/library/.gitignore b/packages/create/templates/library/.gitignore index 715b548f7..294b38578 100644 --- a/packages/create/templates/library/.gitignore +++ b/packages/create/templates/library/.gitignore @@ -3,6 +3,8 @@ node_modules # Output .output .vercel +.netlify +.wrangler /.svelte-kit /build /dist diff --git a/packages/create/templates/minimal/.gitignore b/packages/create/templates/minimal/.gitignore index 79518f716..3b462cb0c 100644 --- a/packages/create/templates/minimal/.gitignore +++ b/packages/create/templates/minimal/.gitignore @@ -3,6 +3,8 @@ node_modules # Output .output .vercel +.netlify +.wrangler /.svelte-kit /build