Skip to content

Commit 8449b75

Browse files
committed
Add linting, commit hooks
1 parent c597571 commit 8449b75

File tree

5 files changed

+3390
-225
lines changed

5 files changed

+3390
-225
lines changed

.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.gitignore

.husky/pre-commit

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/env sh
2+
. "$(dirname -- "$0")/_/husky.sh"
3+
4+
npx lint-staged

lint-staged.config.mjs

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { ESLint } from 'eslint'
2+
import prettier from 'prettier'
3+
4+
// Adapted from https://github.com/okonet/lint-staged#how-can-i-ignore-files-from-eslintignore
5+
async function eslintRemoveIgnoredFiles(files) {
6+
const eslint = new ESLint()
7+
const isIgnored = await Promise.all(
8+
files.map((file) => {
9+
return eslint.isPathIgnored(file)
10+
})
11+
)
12+
const filteredFiles = files.filter((_, i) => !isIgnored[i])
13+
return filteredFiles.join(' ')
14+
}
15+
16+
// Adapted from https://github.com/okonet/lint-staged#how-can-i-ignore-files-from-eslintignore
17+
function prettierRemoveIgnoredFiles(files) {
18+
const filteredFiles = files.filter(
19+
(file) => !prettier.getFileInfo(file).isIgnored
20+
)
21+
return filteredFiles.join(' ')
22+
}
23+
24+
export default {
25+
// Note, this rule should include *.mdx, but mdx linting is broken.
26+
// See https://github.com/mdx-js/eslint-mdx/issues/367.
27+
'*.{cjs,mjs,js,jsx,ts,tsx}': async (files) => {
28+
const filteredFiles = await eslintRemoveIgnoredFiles(files)
29+
if (!files) return []
30+
return `eslint --cache --fix --max-warnings 0 ${filteredFiles}`
31+
},
32+
'*.{ts,tsx}': () => 'tsc -p .',
33+
'*.{css,scss,cjs,mjs,js,json,jsx,md,mdx,ts,tsx}': async (files) => {
34+
const filteredFiles = prettierRemoveIgnoredFiles(files)
35+
if (!files) return []
36+
return `prettier --write ${filteredFiles}`
37+
},
38+
}

0 commit comments

Comments
 (0)