-
-
Save shettayyy/328da46a99a9d7c746636df1cf769675 to your computer and use it in GitHub Desktop.
#!/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 $? |
One more tip: instead of saving this to .git/hooks/pre-commit
save it to scripts/pre-commit
(or somewhere in your repo). Then run ln -s $PWD/scripts/pre-commit .git/hooks/
and add a note about this to your README.md or CONTRIBUTORS.md file. This way anyone who clones the repo will have the hook as well.
@rashtay any idea why I am facing this issue?
This is occurring on source tree.
Validating Javascript:
env: node: No such file or directory
thank you @rashtay, thank you all for this!
Nice one, I have added a \n
to https://gist.github.com/rashtay/328da46a99a9d7c746636df1cf769675#file-pre-commit-eslint-L25 and https://gist.github.com/rashtay/328da46a99a9d7c746636df1cf769675#file-pre-commit-eslint-L27 for better readability on the prompt.
if you are use Tmux+Zsh & have an error with message
.git/hooks/pre-commit: 7: .git/hooks/pre-commit: [[: not found Validating Javascript: .git/hooks/pre-commit: 16: .git/hooks/pre-commit: [[: not found
this my solution, cange line 1 on pre-commit-eslint from
#!/bin/sh
To
#!/bin/bash
i tested on my ubuntu with Tmux+Zsh
thanks
Hi
I tried it but every time it result succeed whereas ng lint in angular project having eslint issue then why it all time result succeed.
please help me. I am facing this since days.
It fails on error, but not on warnings. What to change in this script so that it fails on warnings too?
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.
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.
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.
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-25984fbce17eEdit: 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 ;)
+1 @ri7nz solution even though I'm just on Zsh.