NPM: The Node Package Manager
NPM is the default dependency management tool for the NodeJS projects. It uses ‘package.json’ for configuring project details. The configurations include dependencies, scripts tasks, repository location and many other stuffs.
As a dependency management tool, it not only help us download and include direct dependencies but, also takes care of the dependencies of these direct dependencies internally.
Installing All External Dependencies using NPM
We use three major types of dependencies in NodeJS projects:
1. dependencies — Includes libraries that needs to be bundled with the app in production.
2. devDependencies — Includes build-libraries, testing-libraries required for development and quality checks. We do not need these in our production builds.
3. optionalDependencies — Its a less commonly used field but, as the name suggest it includes optional dependencies. In other words, it says the application has been built to work even if these dependencies are missing.
We can find these categories in ‘package.json’ file. And, to install or download all these listed dependencies for a project we can use the following command :
npm install
Adding Individual Dependencies
1. Local installation : Adding a library for a specific project
npm install <package-name>
//To add ‘express’ library into our project
npm install express
Using the above command, we can add an external package under ‘dependecies’ list in ‘package.json’. This downloads the package into node-modules subfolder of the current project.
The ‘install’ command comes with following key options for specifying type of the dependency :
- –save-dev : It adds the package under list of ‘devDependencies’ in package.json.
- –no-save : It does not add the downloaded package as a project dependency in package.json.
- –save-prod or –save : It’s the default option and we need not specify it explicitly. And, it adds the installed package under ‘dependencies’ list.
2. Global Installation — Adding a library to share across projects
npm install -g <package-name>
Using ‘-g’ option as shown above, we can install external libraries in global locations. This is useful for libraries shared across multiple projects. Generic development tools like ‘create-react-app’, ‘HTTP-server’ etc are good candidates for global installations.
The -g option installs the library into the global location. The global location can be found using :
F:\nodejs\node01\first-project>npm root -g
C:\Users\Akshyat\AppData\Roaming\npm\node_modules
Removing Individual Dependencies
The command to remove a package from the node-modules directory.
//For removing from local node-modules directory
npm uninstall <package-name>
//For removing from global node-modules directory
npm uninstall -g <package-name>
The command to remove a package from local node-modules and dependencies list in package.json :
//Command to remove from dependencies list
npm uninstall -save <package-name>
//Command to remove from devDependencies list
npm uninstall -save-dev <package-name>
Summary
Apart from dependency management, npm along with package.json help us manage various aspects of project development. It helps us in managing various command line scripts, publish the package, and maintaining many other project-related details. We will discuss more on this as part of the article on package.json