DEV Community

Ben Halpern
Ben Halpern

Posted on

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

I'm getting back into that JavaScript life and I'd love some suggestions about some libs I might want to check out. If you're an author of something, please feel free to pitch me. 😄

Oldest comments (58)

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.

Collapse
 
michael profile image
Michael Lee 🍕

Emojic! Cause you know...emoji is life.

Collapse
 
defman profile image
Sergey Kislyakov

pnpm. It's like npm but on steroids.
The author of this handy project is on dev.to as well: @zkochan

Collapse
 
zkochan profile image
Zoltan Kochan

Thanks for mentioning!

Collapse
 
pradeep_io profile image
Pradeep Sharma

If you face "forgot password" problem too often and do not trust online password managers. Use this:

Chaabi: A dead simple CLI tool to encrypt text "locally"

producthunt.com/posts/chaabi
npmjs.com/package/chaabi

P.S.: I am the creator of the package

Collapse
 
danieljsummers profile image
Daniel J. Summers

pm2 for running your Node applications (or anything else) in production. I used to use forever, but pm2 actually persists across reboots, assuming you set it up to start.

I'm still learning with it, but I like what I've learned so far!

Collapse
 
developius profile image
Finnian Anderson • Edited

PM2 is super awesome, especially the integration with keymetrics.io

Collapse
 
0x64796c616e profile image
dylan

My company recently started using ramda. I don't know much about Haskell, but Ramda basically seems to bring all the functions from Haskell over, and encourages a functional approach to programming. It took me 2 days to really wrap my head around it, but I'm glad I did; it is sooooo cool. It'll beat you down the first few days you use it if you've never programmed functionally, and unfortunately there's not as many examples to follow when you Google stuff for it, but the docs are great and the community looks very helpful.

After I got the hang of it... I'm having so much fun.

Collapse
 
ben profile image
Ben Halpern

Yeah, I've used ramda and I like it.

Collapse
 
johnpaulada profile image
John Paul Ada

I haven't tried it but npx sounds cool! It can run your npm package binaries on the command-line!
Here are some good resources for npx. :smile:

Collapse
 
nitishdayal profile image
Nitish Dayal

NPX makes me happy. NPX + terminal aliases = Very rare need to globally install a package.

Collapse
 
eduplessis profile image
Edouard Duplessis

npx is now ship with the latest version of npm medium.com/@maybekatz/introducing-...

Collapse
 
hemanth profile image
hemanth.hm

Over the years I have been trying to collect such modules which are not in the like light but very useful, check them out -> nmotw.in

P.S: Shameless plug: I run a weekly mailer of the same, feel free to subscribe. 🤗

Collapse
 
gonzofish profile image
Matt Fehskens

Just wanted to say that that is a pretty cool list you're maintaining!

Collapse
 
clickclickonsal profile image
Sal Hernandez • Edited

eslint - For your all your JavaScript linting needs
prettier - Code Formatter to enforce coding style consitency in your project
redux - If you're using react
redux-saga - for handling your async operations in redux

yarn > npm because npm 5 has been buggy for me & a lot of other people as well. Yarn never gives me any issues & it's so much faster. :-)

Collapse
 
aghost7 profile image
Jonathan Boudreau
  • supertest for writing api tests.
  • power-assert which a major improvement over the builtin assert but without the complexity of a library like chai.
  • lerna for creating monorepo projects.
Collapse
 
levahim profile image
Lev Himmelfarb

If you are writing a Node.js backend that works with a SQL database, check out x2node collection of modules (see x2node.com).

Collapse
 
zeropaper profile image
Valentin Vago

My discoveries in the last months:

  • npm-run-all to run npm scripts in parallel or sequence (and get rid of task runners like grunt or gulp).
  • Webdriver.io for my E2E tests
  • neutrino is some kind of wrapper around Webpack and is really worth having a look at.
Collapse
 
letsbsocial1 profile image
Maria Campbell

You can also get rid of task runners by using only webpack along with its loaders and plugins. With webpack 2 and beyond, the webpack team's goal has been to do just that. Be the alternative to task runners like Gulp and Grunt. Especially when working with libraries like React for example.

Collapse
 
rapasoft profile image
Pavol Rajzak

This might not be the best "back to the JavaScript" package, but it might be interesting for people working with eslint

lint-filter

The best scenario to use this is when you have a large project and you decide to introduce new ESLint rule and you only want to apply it on the new code, not change everything at once.

Collapse
 
maruru profile image
Marco Alka • Edited

Result-js and ROption, which introduce our favorite Rust types to JS :D

Collapse
 
mordzuber profile image
Mordechai Zuber

npmjs.com/package/npm-watch is a nice little tool I maintain, useful if you invest in scripts in your package.json
there are some bugs, but they are also being worked on