Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions section/git-commit-hooks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,18 @@ With [Husky](https://typicode.github.io/husky/#/), you can add any number of com

## Setting up Husky
Setting up Husky is incredibly easy as Husky provides a command that will install, initialize, and create all files needed for Husky to start working. There is a manual process if the single set up command doesn't work so if you run into problems, you can try the set up step by step.

### Yarn
```
npx husky-init && yarn
```

### NPM
```
npx husky-init && npm install
```


Comment on lines +15 to +20
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've simple tried to execute instruction step by step without having yarn installed and failed. this fix will include also instructions for NPM

## Setting up Formatting
To set up [Prettier](https://prettier.io/), and [pretty-quick](https://github.com/azz/pretty-quick). If Prettier has already been set up in the repo, the only necessary package that should be added is pretty-quick.

Expand All @@ -22,26 +30,26 @@ yarn add --dev prettier pretty-quick
npm install --save-dev prettier pretty-quick
```

This is just what I needed to set up Prettier in my repo as it was being added fresh. It can be added manually as well.
This is just what I needed to set up Prettier in my repo as it was being added fresh. It can be added manually as well.

**Mac Command**
```
echo '{"singleQuote": true}'> .prettierrc.json && echo '# Ignore artifacts:
echo '{"singleQuote": true}'> .prettierrc.json && echo '# Ignore artifacts:
build
coverage'> .prettierignore
```

## Hooks
The hooks I used to set up the formatting and unit tests being run before every commit. Important to note that if you set up unit tests to run it should abort at the end. I ran into an issue where the command was watching for the tests to change and this caused my commit to never fail or succeed so it ran indefinitely.
This sets up the formatter. Notice how it uses `set` over `add` as the second command does. This is because this was the first hook I was adding. The `set` command will overwrite all commands in the file. I also had the files format first and the unit tests run second. This is because regardless of if the unit tests pass or fail, I want my files to be formatted. If any of the commands error out, the commit will be aborted and no other hooks will be run, therefore, my unit tests are run last.
This sets up the formatter. Notice how it uses `set` over `add` as the second command does. This is because this was the first hook I was adding. The `set` command will overwrite all commands in the file. I also had the files format first and the unit tests run second. This is because regardless of if the unit tests pass or fail, I want my files to be formatted. If any of the commands error out, the commit will be aborted and no other hooks will be run, therefore, my unit tests are run last.
### Yarn
```
yarn husky set ./husky/pre-commit "npx pretty-quick --staged"
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you execute this line it will fail as path to husky folder is wrong, it should be .husky instead.

yarn husky set .husky/pre-commit "npx pretty-quick --staged"
yarn husky add .husky/pre-commit "yarn test --watchAll=false"
```

### NPM
```
npx husky set ./husky/pre-commit "npx pretty-quick --staged"
npx husky set .husky/pre-commit "npx pretty-quick --staged"
npx husky add .husky/pre-commit "npm test --watchAll=false"
```