How to Install Node.js and NPM on Windows, macOS & Linux?

In today's article, we take a deep dive into what is NPM and how to install Node.js and NPM on Linux OS.

Updated: 07 May, 24 by Antoniy Yushkevych 13 Min

List of content you will read in this article:

Welcome to the world of web development and programming, where the power of code shapes the digital landscape. In this article, we're diving into the essential topic of "NPM Install." If you're a budding developer or an experienced coder, you've likely come across the term "NPM Install" at some point in your journey. But what exactly does it mean, and why is it so crucial in the realm of web development?

NPM, short for Node Package Manager, is a treasure trove for developers. It's the heart of the JavaScript ecosystem, providing a vast repository of packages and libraries that make our lives as programmers easier. NPM enables you to effortlessly manage dependencies, access valuable code resources, and supercharge your projects with pre-built solutions.

To fully grasp the concept of "NPM Install," it's essential to have a clear understanding of what NPM is. NPM stands for Node Package Manager, and it's a central piece of the JavaScript ecosystem. Think of it as your digital toolbox, containing all the nuts and bolts you need to build your web applications and projects effectively.

The Backbone of JavaScript

NPM serves as the backbone of JavaScript development by providing a seamless way to manage the various libraries and packages that your project may require. It acts as a conduit for sharing code and allows you to tap into a vast community of developers who have contributed their solutions for common programming challenges.

With NPM, you can easily find, install, and update packages, ensuring that your project stays up-to-date with the latest improvements and security patches. This central repository system streamlines the development process, making it easier to bring your creative ideas to life without reinventing the wheel.

Versatility and Universality

One of the beauties of NPM is its universality. It isn't limited to a specific platform or application framework; it's a tool that can be used in various contexts. Whether you're working on a web application, a mobile app, or even server-side scripting, NPM is your go-to companion.

Step 1: Verify Node.js Installation

First things first, to use NPM, you must have Node.js installed. To check if it's already on your system, open your command line or terminal and type the following command:

node -v

This command will display the installed Node.js version. If you see a version number, you're good to go. If not, you'll need to install Node.js. You can download the installer for your specific operating system from the official Node.js website. Explore Your NPM Version: Uncover how to check your NPM version for seamless development. Click on "Check NPM Version" now!

Step 2: Installing Node Package Manager (NPM)

Fortunately, when you install Node.js, it typically includes NPM. To verify if NPM is installed, run the following command in your terminal:

npm -v

This command will display the version of NPM installed on your system. If you see a version number, congratulations – you're ready to start using NPM. If not, you might need to install NPM separately, although this is rare with recent versions of Node.js.

Step 3: Updating NPM (Optional)

To ensure you're using the latest version of NPM, you can update it by running the following command:

npm install -g npm

This will fetch and install the most recent version of NPM globally on your system. Don't Miss Out: Enhance Your Development Skills by Updating npm Version!

When working with NPM, you'll encounter two distinct types of packages: scoped and unscoped. Understanding the differences between these two is vital for managing your project's dependencies effectively.

  • Unscoped Packages

Unscoped packages are the more traditional and straightforward type of NPM packages. They have a single name and are globally accessible to the entire NPM ecosystem. When you install an unscoped package, it's available for use in any project without any naming conflicts.

For example, if you want to install a popular JavaScript utility library like lodash, you would use the following command:

npm install lodash

This will fetch and install the "lodash" package, and you can use it across all your projects without any issues.

  • Scoped Packages

Scoped packages, on the other hand, are more specialized and designed for organizations or individuals who want to namespace their packages to avoid naming clashes with other packages in the NPM registry. Scoped packages have a unique naming convention


For instance, if you're working on a project for your company, "MyTechCorp," you might want to create a scoped package named "mytechcorp-utils." To install a scoped package, you would use a command like this:

npm install @mytechcorp/utils

In the realm of JavaScript and Node.js, the terms "packages" and "modules" are frequently used, and they play distinct roles in the development process. It's crucial to understand the differences between these two concepts to effectively manage your projects and dependencies.

Modules: Building Blocks of Your Code

Modules in JavaScript refer to individual files containing functions, variables, and other code that can be imported and reused within your project. They are the building blocks of your application, allowing you to break down your code into manageable and reusable parts.

In Node.js, you can create modules by simply defining your code within a JavaScript file and using the `module.exports` statement to make specific functions or variables available to other parts of your project. For example, consider a file named `math.js`:

// math.js

module.exports = {

  add: (a, b) => a + b,

  subtract: (a, b) => a - b,


You can then import these functions in another JavaScript file like this:

const math = require('./math');

const sum = math.add(5, 3);

Packages: Bundles of Modules and Dependencies

On the other hand, packages are collections of modules and additional metadata bundled together. These packages can be distributed and installed via NPM. Packages are a way to share reusable code with other developers and to manage your project's dependencies effectively.

For instance, when you run `npm install lodash`, you're installing the lodash package, which contains numerous utility modules. You can then access these modules in your code as needed.

The key distinction here is that packages encompass multiple modules and often have dependencies of their own. Modules, on the other hand, are individual units of code that can be loaded into your application to provide specific functionality.

Modules are the foundation of code organization in Node.js and JavaScript applications. They provide a way to break down your code into reusable, self-contained units. Understanding how to work with modules is crucial for building maintainable and efficient projects.

The Role of Modules

In JavaScript, a module is a file that encapsulates a specific piece of functionality. It can contain variables, functions, or classes that are related to a particular task or feature. Modules help you keep your codebase organized and prevent namespace clashes by isolating different parts of your code.

For example, if you're building a web application, you might create separate modules for tasks like user authentication, data storage, and UI components. Each module focuses on a specific aspect of your application, making it easier to manage and update.

Exporting and Importing

In Node.js, modules use the CommonJS module system. To make functions or variables from one module available to other modules, you use the `module.exports` object. Here's an example of exporting and importing in Node.js:

// math.js

module. exports.add = (a, b) => a + b;

// app.js

const math = require('./math');

const sum = math.add(5, 3);

In modern JavaScript (ES6+), you can also use the `export` and `import` syntax to achieve the same result:

// math.js

export const add = (a, b) => a + b;

// app.js

import { add } from './math';

const sum = add(5, 3);

Modules promote code reusability and maintainability, which are essential principles in software development.

Step 1: Initialize Your Project

First, you need to create a new directory for your module and navigate to it in your command line or terminal. You can do this by running the following commands:

mkdir my-module

cd my-module

Step 2: Package.json Configuration

Every Node.js module must have a `package.json` file that describes the module's metadata, dependencies, and other essential information. You can create this file manually or use the `npm init` command to generate it interactively. For instance:

npm init

You'll be prompted to answer various questions about your module, such as its name, version, description, entry point, and more. Make sure to provide accurate and informative details.

Step 3: Code Your Module

Write the code for your module in one or more JavaScript files within your project directory. Ensure that your code is well-organized and follows best practices to make it as useful and maintainable as possible.

Step 4: Export Module Functionality

To make your module's functionality accessible to others, you need to export it. You can use the `module.exports` syntax for CommonJS modules or the `export` syntax for ES6 modules, as we discussed in the previous section.

Here's an example of exporting a function from a CommonJS module:

// my-module.js

module.exports.myFunction = () => {

  // Your function code here


Step 5: Publish to NPM

Once your module is ready, it's time to publish it to the NPM registry. You'll need an NPM account, which you can create on the NPM website. Then, run the following command to publish your module:

npm publish

This command will package your module and upload it to the NPM registry, making it available to other developers worldwide.

Step 6: Using Your Module

Now that your module is published, other developers can easily install and use it in their projects by running:

npm install your-module-name

Replace `your-module-name` with the actual name of your module.

While NPM is a powerful tool for managing packages and dependencies in your projects, you may encounter issues during the installation process. In this section, we'll explore common problems and their solutions to help you troubleshoot NPM installs more effectively.

  • Slow Network Connection: If you're experiencing slow download speeds during package installation, consider the following remedies:

  • Use a Mirror: NPM allows you to use mirrors or alternative registry sources, which might offer better download speeds. You can set a different registry using the `npm config set registry` command.
  • Use a VPN: If your network connection is particularly slow, consider using a VPN to connect to a different server or region with faster internet speeds.
  • Clear the Cache: NPM caches packages on your system. You can try clearing the cache using `npm cache clean -f` to potentially resolve slow download issues.
  • Permission Errors: Permission errors often occur when NPM doesn't have the necessary permissions to access or modify certain directories. To address this:
  • Run as Administrator (Windows): If you're on Windows, running your terminal as an administrator can resolve permission problems.
  • Use NPM without Sudo (Linux/Mac): It's best not to use `sudo` when running NPM commands, as it can lead to permission issues. Instead, change your NPM prefix to a directory you have access to:

  npm config set prefix ~/.npm

  export PATH="$PATH:$HOME/.npm/bin"

  • Outdated Packages: Sometimes, packages may become outdated or incompatible with the latest versions of Node.js. To mitigate this:
  • Update Your Packages: Use the `npm outdated` command to identify outdated packages in your project. Then, update them individually or all at once with `npm update`.
  • Proxy or Firewall Issues: If your organization or network uses a proxy or has firewall rules, NPM may encounter difficulties. To address this:
  • Configure NPM for Your Proxy: Set NPM to use your proxy server by running the following commands:

  npm config set proxy

  npm config set https-proxy

  • Check Firewall Rules: Ensure that your firewall allows NPM to access external resources. Contact your network administrator if needed.
  • Verify Your Dependencies: Sometimes, errors are caused by incorrect or missing dependencies in your `package.json` file. Always double-check your dependencies to ensure they are correctly listed and spelled.

In the world of web development and JavaScript programming, NPM (Node Package Manager) is more than just a tool; it's a key player in your success. Throughout this article, we've explored the essence of "NPM Install" and delved into essential topics, including the differences between scoped and unscoped packages, the role of modules, and creating your own Node.js modules for the NPM registry. After installing, you can Update your NPM.

Antoniy Yushkevych

Antoniy Yushkevych

Master of word when it comes to technology, internet and privacy. I'm also your usual guy that always aims for the best result and takes a skateboard to work. If you need me, you will find me at the office's Counter-Strike championships on Fridays or at