Skip to content

Commit 33ecdd5

Browse files
authored
feat(addons): Respect .gitignore in eslint addon (#335)
1 parent 478b72c commit 33ecdd5

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

.changeset/beige-peas-swim.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'sv': patch
3+
---
4+
5+
feat: respect `.gitignore` in `eslint` add-on

packages/addons/eslint/index.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export default defineAddon({
2121
const prettierInstalled = Boolean(dependencyVersion('prettier'));
2222

2323
sv.devDependency('eslint', '^9.7.0');
24+
sv.devDependency('@eslint/compat', '^1.2.3');
2425
sv.devDependency('globals', '^15.0.0');
2526
sv.devDependency('eslint-plugin-svelte', '^2.36.0');
2627

@@ -56,6 +57,14 @@ export default defineAddon({
5657
AstKinds.ExpressionKind | AstTypes.SpreadElement | AstTypes.ObjectExpression
5758
> = [];
5859

60+
const gitIgnorePathStatement = common.statementFromString(
61+
'\nconst gitignorePath = fileURLToPath(new URL("./.gitignore", import.meta.url));'
62+
);
63+
common.addStatement(ast, gitIgnorePathStatement);
64+
65+
const ignoresConfig = common.expressionFromString('includeIgnoreFile(gitignorePath)');
66+
eslintConfigs.push(ignoresConfig);
67+
5968
const jsConfig = common.expressionFromString('js.configs.recommended');
6069
eslintConfigs.push(jsConfig);
6170

@@ -92,11 +101,6 @@ export default defineAddon({
92101
eslintConfigs.push(svelteTSParserConfig);
93102
}
94103

95-
const ignoresConfig = object.create({
96-
ignores: common.expressionFromString('["build/", ".svelte-kit/", "dist/"]')
97-
});
98-
eslintConfigs.push(ignoresConfig);
99-
100104
let exportExpression: AstTypes.ArrayExpression | AstTypes.CallExpression;
101105
if (typescript) {
102106
const tsConfigCall = functions.call('ts.config', []);
@@ -121,8 +125,10 @@ export default defineAddon({
121125

122126
// imports
123127
if (typescript) imports.addDefault(ast, 'typescript-eslint', 'ts');
128+
imports.addNamed(ast, 'node:url', { fileURLToPath: 'fileURLToPath' });
124129
imports.addDefault(ast, 'globals', 'globals');
125130
imports.addDefault(ast, 'eslint-plugin-svelte', 'svelte');
131+
imports.addNamed(ast, '@eslint/compat', { includeIgnoreFile: 'includeIgnoreFile' });
126132
imports.addDefault(ast, '@eslint/js', 'js');
127133

128134
return generateCode();

packages/create/templates/demo/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ node_modules
33
# Output
44
.output
55
.vercel
6+
.netlify
7+
.wrangler
68
/.svelte-kit
79
/build
810

packages/create/templates/library/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ node_modules
33
# Output
44
.output
55
.vercel
6+
.netlify
7+
.wrangler
68
/.svelte-kit
79
/build
810
/dist

packages/create/templates/minimal/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ node_modules
33
# Output
44
.output
55
.vercel
6+
.netlify
7+
.wrangler
68
/.svelte-kit
79
/build
810

0 commit comments

Comments
 (0)