By default, npm installs the latest available version of modules according to each dependencies' semantic version. This can be problematic if a module author doesn't adhere to semver and introduces breaking changes in a module update, for example.
To lock down each dependencies' version (and the versions of their dependencies, etc) to the specific version installed locally in the node_modules
folder, use
npm shrinkwrap
This will then create a npm-shrinkwrap.json
alongside your package.json
which lists the specific versions of dependancies.