Package managers exist for front-end developers building web apps so they can more easily manage asset instalations, upgrades, removals and dependencies.
NPM is a registry that hosts a large number of "packaged modules of code" added and used by JavaScript developers. NPM is also the command line client that allows the download, installation and upload of these packages. It is a public collection of open-source packages developed to solve a particular problem by developers in the JavaScript community. Basically it is a way to reuse code from other developers and to share your code that might help others.
Describe what a 'dependency' is, and the difference between a devDependency and a regular dependency. Give an example of each.
A dependency is when one section or package of code needs another section or package of code to run properly. The difference between a devDependency and a regular dependency is that a devDependency is only needed during development while a regular dependency is also needed during normal use of the application after development. A few examples of devDependencies would be esLint or Mocha/Chai. Some regular dependencies would be React and Redux.