Newcomers to Node and NPM often ask how to install a specific version of a certain NPM package. There are several ways to accomplish this. First, let’s start with the basic NPM CLI syntax:
npm install lodash
This command installs
lodash in the current folder and fetches the latest available version.
If you know the exact version of the package, you can append it to the package name after the @ character:
npm install firstname.lastname@example.org
You can look up the latest version for any NPM package at npmjs.com.
If you don’t know the exact version of the package, NPM allows using semantic ranges to define the version. For example,
npm install lodash@^4.0.0
This command will install the latest 4.x.x version. You can learn more about the syntax of semantic versioning at docs.npmjs.com.
Both aforementioned examples don’t modify package.json and don’t add installed modules to the list of dependencies. Use –save to add the installed module to the package.json’s dependencies and –save-dev to add it to devDependencies. If you install a module without defining a specific version (i.e. without any version or using a semantic range), NPM will add the semantic range to the package.json as is. To prevent this, use –save-exact flag in addition to –save or –save-dev. This flag will force NPM to store the exact module version in the package.json.
npm install lodash --save --save-exact- installs the latest version and saves the exact version in the
dependenciesin the package.json.
npm install lodash --save-dev --save-exact- installs the latest version and saves the exact version in the
devDependenciesmap in the package.json.
npm install lodash --save- installs the latest version and saves the semantic range in the
dependenciesin the package.json. E.g.
--save-exactalone is not sufficient. You need to define both flags
--save-devobviously don’t work together with the
-gflag which installs the module globally.