fix: improve lint-staged configuration and add batch linting script

- Fix lint-staged to properly pass file arguments to ESLint
- Add batch linting script for processing large file sets
- Increase Node.js memory limit to 4GB for ESLint
- Add lint:batch npm script for manual batch processing
This commit is contained in:
defiQUG
2025-11-13 09:35:15 -08:00
parent 4a3e992509
commit 97daf7e407
2 changed files with 49 additions and 0 deletions

20
.lintstagedrc.js Normal file
View File

@@ -0,0 +1,20 @@
// Lint-staged configuration
// Handles large batches of files with proper memory management
module.exports = {
'*.{ts,tsx}': (filenames) => {
// Process files in smaller batches to avoid memory issues
const batchSize = 20;
const batches = [];
for (let i = 0; i < filenames.length; i += batchSize) {
batches.push(filenames.slice(i, i + batchSize));
}
return batches.map((batch) => {
return `NODE_OPTIONS='--max-old-space-size=4096' eslint --fix --config eslint.config.js ${batch.join(' ')}`;
});
},
'*.{json,md,yaml,yml}': 'prettier --write',
};

29
scripts/lint-batch.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Lint files in batches to avoid memory issues
# Usage: ./scripts/lint-batch.sh [files...]
set -e
BATCH_SIZE=20
FILES=("$@")
if [ ${#FILES[@]} -eq 0 ]; then
echo "No files provided"
exit 0
fi
echo "Linting ${#FILES[@]} files in batches of $BATCH_SIZE..."
for ((i=0; i<${#FILES[@]}; i+=BATCH_SIZE)); do
BATCH=("${FILES[@]:i:BATCH_SIZE}")
echo "Processing batch $((i/BATCH_SIZE + 1)): ${#BATCH[@]} files"
NODE_OPTIONS='--max-old-space-size=4096' \
eslint --fix --config eslint.config.js "${BATCH[@]}" || {
echo "ESLint failed on batch $((i/BATCH_SIZE + 1))"
exit 1
}
done
echo "All batches processed successfully"