Compare commits

...

1 Commits

Author SHA1 Message Date
bymyself
ed9e8a2144 chore: enforce vue block order in pre-commit 2025-09-19 22:25:24 -07:00

View File

@@ -1,10 +1,19 @@
/* eslint-disable @typescript-eslint/no-floating-promises */
const vueBlockOrderRule =
"vue/block-order: ['error', {'order': ['docs', 'script', 'template', 'i18n', 'style']}]"
export default { export default {
'./**/*.js': (stagedFiles) => formatAndEslint(stagedFiles), './**/*.js': (stagedFiles) => formatAndEslint(stagedFiles),
'./**/*.{ts,tsx,vue,mts}': (stagedFiles) => [ './**/*.{ts,tsx,mts}': (stagedFiles) => [
...formatAndEslint(stagedFiles), ...formatAndEslint(stagedFiles),
'pnpm typecheck' 'pnpm typecheck'
] ],
'./**/*.vue': (stagedFiles) => [
runVueBlockOrder(stagedFiles),
...formatAndEslint(stagedFiles)
].filter(Boolean)
} }
function formatAndEslint(fileNames) { function formatAndEslint(fileNames) {
@@ -13,3 +22,9 @@ function formatAndEslint(fileNames) {
`pnpm exec prettier --cache --write ${fileNames.join(' ')}` `pnpm exec prettier --cache --write ${fileNames.join(' ')}`
] ]
} }
function runVueBlockOrder(fileNames) {
if (fileNames.length === 0) return null
const quotedFiles = fileNames.map((file) => `"${file}"`).join(' ')
return `pnpm exec eslint --fix --rule "${vueBlockOrderRule}" ${quotedFiles}`
}