-
Notifications
You must be signed in to change notification settings - Fork 3
/
.lintstagedrc.mjs
46 lines (42 loc) · 1.13 KB
/
.lintstagedrc.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/** @param {string[]} files */
function test(files) {
const packages = files
.map((file) => {
return {
name: file.match(/packages\/(?<package>.+)\/tests/)?.groups?.package,
file: file,
}
})
.filter((x) => Boolean(x.name))
.reduce((prev, cur) => {
if (cur.name) {
if (prev[cur.name]) {
prev[cur.name].push(cur.file)
} else {
prev[cur.name] = [cur.file]
}
}
return prev
}, {})
const plugin = Object.entries(packages).filter(
([key]) => key === 'babel-plugin-jsx'
)
const other = Object.entries(packages)
.filter(([key]) => key !== 'babel-plugin-jsx')
.map(([_, file]) => file).flat(Infinity)
return [
plugin.length
? `jest --showConfig --config packages/${plugin[0][0]}/jest.config.js ${plugin[0][1].join(
' '
)}`
: null,
other.length
? `jest --showConfig --config jest.config.js --colors ${other.join(' ')}`
: null,
].filter(Boolean)
}
const lint = {
'**/*.(js|jsx|ts|tsx)': ['prettier --write', 'eslint --fix'],
'**/*.spec.(ts|tsx)': test,
}
export default lint