Last active
June 20, 2024 23:01
-
-
Save linhmtran168/2286aeafe747e78f53bf to your computer and use it in GitHub Desktop.
Pre-commit hook to check for Javascript using ESLint
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
#!/bin/sh | |
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".jsx\{0,1\}$") | |
if [[ "$STAGED_FILES" = "" ]]; then | |
exit 0 | |
fi | |
PASS=true | |
echo "\nValidating Javascript:\n" | |
# Check for eslint | |
which eslint &> /dev/null | |
if [[ "$?" == 1 ]]; then | |
echo "\t\033[41mPlease install ESlint\033[0m" | |
exit 1 | |
fi | |
for FILE in $STAGED_FILES | |
do | |
eslint "$FILE" | |
if [[ "$?" == 0 ]]; then | |
echo "\t\033[32mESLint Passed: $FILE\033[0m" | |
else | |
echo "\t\033[41mESLint Failed: $FILE\033[0m" | |
PASS=false | |
fi | |
done | |
echo "\nJavascript validation completed!\n" | |
if ! $PASS; then | |
echo "\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 | |
echo "\033[42mCOMMIT SUCCEEDED\033[0m\n" | |
fi | |
exit $? |
Any idea why I am facing this issue for above code? This is occurring on source tree.
Validating Javascript: env: node: No such file or directory
I get this error from "VS Code" because Node is not present in the hook.
As suggested by @charisTheo - adding NVM will help fix the paths for node.
I personally use Brew on MacOS, so this works well for both Brew + native NVM users.
Add this to the top just underneath the starting line #!/bin/bash
Thanks to the original author for this hook, it has worked very well for our team ❤️
export NVM_DIR="$HOME/.nvm"
if [[ -f "/opt/homebrew/bin/brew" ]]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
[ -s "$(brew --prefix)/opt/nvm/nvm.sh" ] && . "$(brew --prefix)/opt/nvm/nvm.sh" # This loads nvm
[ -s "$(brew --prefix)/opt/nvm/etc/bash_completion.d/nvm" ] && . "$(brew --prefix)/opt/nvm/etc/bash_completion.d/nvm"
else
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
fi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@adnanaliarshad Fixed it by adding the following on the top of the pre-commit file: