DEV Community

Discussion on: What are some useful npm packages I might not know about?

Collapse
 
damcosset profile image
Damien Cosset • Edited

I've been using husky lately. Make things like pre-commit and pre-push pretty easy. Quite nice to automate those things.

Package here

Collapse
 
ben profile image
Ben Halpern

This looks interesting, but I'm not 100% sure I follow follow what it does based on the readme. Can you explain this like I'm five?

Collapse
 
damcosset profile image
Damien Cosset

It runs commands of your choice at specific times. For example, if you wanted to run your linter right before your commit and your test suite right before you push, you would add in your package.json something like this:


"scripts": {
   "precommit": "npm run lint",
   "prepush": "npm run test",
   "lint": // your linter command,
   "test": // your test command
}

If your linter fails, your commit fails. If your test suite fails, your push fails ( in this example ). You can use any git hooks you wish.

Thread Thread
 
ben profile image
Ben Halpern

And it can run other commands, not just npm environment-related ones?

Thread Thread
 
damcosset profile image
Damien Cosset

That's a good question. I actually never tried. I suppose whatever you can run inside package.json can be used with husky. Here is a list of hooks supported if you are interested by that

Thread Thread
 
rhymes profile image
rhymes • Edited

Yeah it does, just did a quick test:


$ git diff package.json
+    "precommit": "rails test"
$ git commit -am "Added precommit hook to run rails tests"                                                             
  husky > npm run -s precommit (node v8.6.0)

Not going to keep rails test before each commit obviously but we now know it works :D

Thread Thread
 
damcosset profile image
Damien Cosset

Very cool! Thank you!

Thread Thread
 
niketpathak89 profile image
Niket Pathak

Husky does really facilitate creating git hooks. I prefer linting the code before committing, so for those who want to lint on precommit git hook digitalfortress.tech/tricks/lint-o...

Collapse
 
nickytonline profile image
Nick Taylor

You can run anything. lint-staged compliments this package very well. Here's an example, github.com/nickytonline/generator-...

Thread Thread
 
nickytonline profile image
Nick Taylor • Edited

Only one gotcha. If you've already installed the husky package at least once, you will need to run yarn --force or npm install --no-cache. For some reason the post-install script of husky does not run, when the package is pulled from yarn's or npm's cache.