-
-
Save linhmtran168/2286aeafe747e78f53bf 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\}$") | |
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 $? |
@iamjochem, thank you again for your command line fu on that post. it was very helpful and much appreciated!
@iamjochem - A simpler approach than assigning the eslint binary to $ESLINT
would be calling:
$ npx eslint
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
bump
HI I need some info reg the GIT prehook commits using ES Lint. Can anyone has idea?
Please give ur gmail id or phone number
what about Windows users?
@gajus, I had the same though. figured something out:
ESLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/eslint"
check it's installed like so
if [[ ! -x "$ESLINT" ]]; then echo "\t\033[41mPlease install ESlint\033[0m (npm i --save --save-exact --dev eslint)" exit 1 fithen use it in the
for
loop like so:"$ESLINT" "$FILE"
You haven't specified on which file to add this?
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
Facing the same issue. Anyone any ideas why?
@adnanaliarshad Fixed it by adding the following on the top of the pre-commit file:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
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
If you are working on a project where you check in the node_modules folder, and you would like to exclude these files, you can change the line 3 to:
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".jsx\{0,1\}$"| grep -v "node_modules")