-
Notifications
You must be signed in to change notification settings - Fork 284
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor(repo): Speed up linting staged files
- Loading branch information
Showing
1 changed file
with
37 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,42 @@ | ||
#!/bin/sh | ||
. "$(dirname "$0")/_/husky.sh" | ||
|
||
# Build changed packages | ||
npx turbo build | ||
############################## | ||
# Determine Staged Packages | ||
############################## | ||
|
||
staged_files=$(git diff --name-only --cached --diff-filter=ACM) | ||
|
||
# Initialize an empty string to hold the unique folder paths | ||
unique_folders="" | ||
|
||
# Loop through each staged file | ||
for file in $staged_files; do | ||
# Extract the first two folders from the file path | ||
folder=$(echo $file | awk -F'/' '{print $1 "/" $2}') | ||
|
||
# Filter files which end with .js, .jsx, .ts, or .tsx [NOTE: Should match ./.lintstagedrc.json] | ||
if [[ $file =~ \.(js|jsx|ts|tsx)$ ]]; then | ||
# Check if this folder is already in the list of unique folders | ||
if [[ $folder == packages/* ]] && [[ ! " $unique_folders " =~ "$folder" ]]; then | ||
# Append the folder to the list of unique folders | ||
unique_folders="$unique_folders --filter={./$folder}^..." | ||
fi | ||
fi | ||
done | ||
|
||
############################## | ||
# Build Staged Packages | ||
############################## | ||
|
||
if [ -n "$unique_folders" ]; then | ||
npx turbo run build --output-logs=errors-only $unique_folders | ||
else | ||
echo "SKIPPING: No packages to build" | ||
fi | ||
|
||
############################## | ||
# Run Lint Staged | ||
############################## | ||
|
||
# Prettier Standalone | ||
npx lint-staged |