What is the correct way to add commitlint to the commit-msg hook in husky?
Asked Answered
R

3

9

I have an angular project where I want to enforce conventional commits. I have not been able to successfully had the right hook to prevent incorrect hooks.

I started with this tutorial, where it said to add the following to package.json:

{
  "hooks": {
    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
  }
}

This did not work (it still let in bad commits) so I did some research and found this article where it said that the above is for husky 4, and for husky 5 I should run this command:

npx husky add .husky/commit-msg 'npx commitlint --edit $1'

From what I can tell, the commitlint official docs say to do it the same way. However, when I run it, I get this strange prompt that does not do anything:

PS C:\...\MyProj> npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'
Usage
  husky install [dir] (default: .husky)
  husky uninstall
  husky set|add <file> [cmd]

This is just confusing, because what I have written actually follows the third line of the prompt.

Has anyone been through this and can help me understand what I need to do?

Relevant parts from package.json:

"scripts": {
    "postinstall": "husky install"
  },
  "private": true,
  "devDependencies": {
    "@commitlint/cli": "^12.1.1",
    "@commitlint/config-conventional": "^12.1.1",
    "husky": "^6.0.0"
  }
}
Rauch answered 13/4, 2021 at 11:35 Comment(0)
R
9

It seems like there was an issue running npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1' because the command part was more than one word. A workaround I found was to split it up into two parts.

1 - Call npx husky add .husky/commit-msg

This created an empty/ default file in the right place with the following content:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

undefined

2 - Then I just replaced undefined with npx --no-install commitlint --edit $1 and it works

This part of the commitlint docs helped me understand that doing it that way was okay

Hope this helps anyone else who encounters the same issue!

Rauch answered 13/4, 2021 at 11:57 Comment(0)
F
0

You are using Windows. So, try this (it worked for me)

npx husky add .husky/commit-msg "npx --no-install commitlint --edit "$1""

with double quotes instead. Note that $1 also needs double quotes.

Floats answered 12/3, 2023 at 14:40 Comment(0)
U
0

In my case i forgot to install those 2 npm packages:

  • @commitlint/cli
  • @commitlint/config-conventional

After installing them npm i -D @commitlint/cli @commitlint/config-conventional the problem was solved.

Unconnected answered 27/3, 2023 at 23:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.