Skip to content

Instantly share code, notes, and snippets.

@shettayyy
Last active December 10, 2021 05:27
Show Gist options
  • Save shettayyy/328da46a99a9d7c746636df1cf769675 to your computer and use it in GitHub Desktop.
Save shettayyy/328da46a99a9d7c746636df1cf769675 to your computer and use it in GitHub Desktop.
Pre-commit hook for Linting JS with ESLint before commit.
#!/bin/sh
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".jsx\{0,1\}$")
ESLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/eslint"
if [[ "$STAGED_FILES" = "" ]]; then
exit 0
fi
PASS=true
printf "\nValidating Javascript:\n"
# Check for eslint
if [[ ! -x "$ESLINT" ]]; then
printf "\t\033[41mPlease install ESlint\033[0m (npm i --save-dev eslint)"
exit 1
fi
for FILE in $STAGED_FILES
do
"$ESLINT" "$FILE"
if [[ "$?" == 0 ]]; then
printf "\t\033[32mESLint Passed: $FILE\033[0m"
else
printf "\t\033[41mESLint Failed: $FILE\033[0m"
PASS=false
fi
done
printf "\nJavascript validation completed!\n"
if ! $PASS; then
printf "\033[41mCOMMIT FAILED:\033[0m Your commit contains files that should pass ESLint but do not. Please fix the ESLint errors and try again.\n"
exit 1
else
printf "\033[42mCOMMIT SUCCEEDED\033[0m\n"
fi
exit $?
Copy link

ghost commented Mar 8, 2021

It fails on error, but not on warnings. What to change in this script so that it fails on warnings too?

You should configure your .eslintrc to treat rules you consider important as errors. You can also change the command to "$ESLINT" "$FILE" --max-warnings 0 instead.

@shettayyy
Copy link
Author

Hello Everyone,

I created this a long time ago and I no more write such manual scripts. I rely on husky for everything. So pardon me for my delayed response or if I am unable to help. I see there are a lot of helpful comments. I thank each and everyone for making this better. Cheers.

@julix-unity
Copy link

julix-unity commented Nov 19, 2021

Hello Everyone,

I created this a long time ago and I no more write manual scripts. I rely on husky for everything. So pardon me for my delayed response or if I am unable to help. I see there are a lot of helpful comments. I thank each and everyone for making this better. Cheers.

Could you update this then? I think that's why you're still getting so much traffic here.
https://levelup.gitconnected.com/how-to-run-eslint-using-pre-commit-hook-25984fbce17e

Edit: nevermind :D lol big notice right at the top, I skimmed past it - my bad.

@shettayyy
Copy link
Author

Could you update this then? I think that's why you're still getting so much traffic here.
https://levelup.gitconnected.com/how-to-run-eslint-using-pre-commit-hook-25984fbce17e

Edit: nevermind :D lol big notice right at the top, I skimmed past it - my bad.

Edited the notice to clearly indicate I am not maintaining this gist anymore. Thank you for the suggestion @julix-unity ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment