DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’» is a community of 968,547 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
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. Γ°ΕΈΛœβ€ž

Top comments (59)

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
 
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 Author

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

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
 
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
 
letsbsocial1 profile image
Maria Campbell

webpack. babel (you don't just use one babel package, there are many in tandem).

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
 
eduplessis profile image
Edouard Duplessis

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

Collapse
 
nitishdayal profile image
Nitish Dayal

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

Collapse
 
michael profile image
Michael Lee πŸ•

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

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
 
clickclickonsal profile image
Sal Hernandez • Edited on

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
 
krissiegel profile image
Kris Siegel

I heard the msngr.js package is an awesome messaging library that helps with decoupling code. Some amazing person, who I don't know at all what so ever, put it together.

github.com/KrisSiegel/msngr.js

Collapse
 
ben profile image
Ben Halpern Author

πŸ˜„

Collapse
 
skeeveholt profile image
davis davis

+1 for Prettier
Chart.js for simple HTML5 charts when D3 seems like overkill

Also I recently stumbled on javascripting.com - fun resource for geeking out on new libs, packages and tools

Collapse
 
damcosset profile image
Damien Cosset • Edited on

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 Author

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 Author

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 on

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 on

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
 
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
 
ahmedtarek_32 profile image
Ahmed Tarek

If you are going to try building a command line application with node here are some packages to consider:

  • download Downloading any file from its link, useful if are fetching data and going to download images or something

  • commander A framework for cli apps, making options and such

  • chalk A library that lets you output colored text on the terminal

  • inquirer Lets you ask the user questions, useful for creating interactive applications

  • shelljs Run any terminal command from your javascript file

Also if you are starting new projects, you might want to check my project, Initior. It will make initializing your new projects really fast and convenient <3

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 on

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

🌚 Friends don't let friends browse without dark mode.

Sorry, it's true.