npm (Node Package Manager) is an essential tool for any developer working with JavaScript, particularly those involved in front-end development, back-end development with Node.js, or even within certain drone development workflows that utilize JavaScript for scripting, configuration, or companion apps. While the title “How to Install npm on Mac” might seem straightforward, understanding the underlying mechanisms and best practices ensures a robust and efficient development environment. This guide will walk you through the most effective methods for installing npm on your macOS machine, covering both direct installation and the recommended approach using a version manager.

Understanding npm and Node.js
Before diving into the installation process, it’s crucial to grasp the relationship between Node.js and npm. Node.js is a JavaScript runtime environment that allows you to execute JavaScript code outside of a web browser. npm, on the other hand, is the default package manager for Node.js. It is bundled with Node.js, meaning that when you install Node.js, you automatically get npm.
npm serves several vital functions:
- Package Management: It allows you to install, update, and manage libraries, frameworks, and tools (packages) that you can use in your projects. This significantly speeds up development by leveraging pre-built solutions.
- Dependency Management: npm keeps track of the dependencies your project requires. When you install a package, npm downloads it and any other packages it depends on, ensuring your project has everything it needs to run.
- Script Execution: npm enables you to define and run scripts within your
package.jsonfile, automating tasks like building, testing, and deploying your applications. - Publishing Packages: If you develop your own reusable JavaScript modules, npm provides a platform to publish them for others to use.
For developers engaged in drone technology, especially those exploring areas like drone control software, data processing pipelines, or companion applications, Node.js and npm can be invaluable. For instance, you might use Node.js to build a web interface for controlling a drone, process telemetry data received from the UAV, or even develop custom firmware extensions that interact with onboard sensors using JavaScript. Understanding how to effectively manage your Node.js and npm environment is therefore a foundational step.
Why Not Just Install Node.js Directly?
While you can download and install Node.js directly from the official website, this approach often leads to challenges when managing multiple Node.js versions or when working on projects that require specific versions. As projects evolve and dependencies change, you might find yourself needing to switch between different Node.js versions. Installing multiple versions manually can become cumbersome and prone to conflicts. This is where Node version managers come into play.
The Recommended Approach: Using a Node Version Manager
The most robust and flexible way to install and manage Node.js and npm on macOS is by using a Node version manager. These tools allow you to install, switch between, and manage multiple versions of Node.js on your system with ease. The most popular and widely recommended version manager is nvm (Node Version Manager).
Installing nvm
nvm is a script that allows you to manage multiple bash aliases that point to different directories containing distinct Node.js versions. It’s designed to be installed per-user, and it doesn’t interfere with system-wide Node.js installations.
Step 1: Download and Run the nvm Installation Script
Open your Terminal application. You can find Terminal in your Applications folder under Utilities, or by searching for it using Spotlight (Cmd + Space).
Once Terminal is open, you’ll use curl to download and execute the nvm installation script. The exact command can be found on the official nvm GitHub repository, as it may be updated periodically. However, a common and reliable command looks like this:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Let’s break down this command:
curl: This is a command-line tool for transferring data with URLs.-o-: This option tellscurlto output the downloaded content to standard output.https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh: This is the URL of the nvm installation script hosted on GitHub. Note thatv0.39.7is a specific version; you might want to check the nvm GitHub page for the latest stable release.|: This is a pipe, which takes the output of thecurlcommand and sends it as input to the next command.bash: This executes the piped script using the Bash shell.
The script will download nvm and attempt to add the necessary source lines to your shell profile file (e.g., .bash_profile, .zshrc, or .profile).
Step 2: Configure Your Shell
After the installation script runs, it will instruct you on how to load nvm into your current shell session. Typically, you’ll need to close and reopen your Terminal, or run a command like:
For Zsh (the default shell on newer macOS versions):
source ~/.zshrc
For Bash:
source ~/.bash_profile
If you’re unsure which shell you’re using, you can type echo $SHELL in your Terminal.
To verify that nvm has been installed correctly and loaded into your shell, run:
command -v nvm
If nvm is installed correctly, this command will output nvm. If it outputs nothing, you may need to revisit the shell configuration step or check the nvm installation instructions.
Installing Node.js using nvm
Now that nvm is set up, you can use it to install specific versions of Node.js.
Step 1: List Available Node.js Versions
To see which versions of Node.js are available for installation, you can run:
nvm ls-remote
This command will display a long list of all available Node.js versions, including stable releases, long-term support (LTS) versions, and experimental builds.
Step 2: Install a Node.js Version
It’s generally recommended to install an LTS version for stability, especially for production environments or critical development tasks. To install the latest LTS version, you can use:
nvm install --lts
Alternatively, you can install a specific version. For example, to install Node.js version 18.17.0:
nvm install 18.17.0
When you install a Node.js version using nvm install, npm is automatically installed alongside it. The version of npm installed will be the one that is compatible with the chosen Node.js version.

Step 3: Use the Installed Node.js Version
After installation, nvm doesn’t automatically use the newly installed version. You need to tell nvm which version to use for your current session or set a default version.
To use a specific version for your current session:
nvm use 18.17.0
To set a default version that nvm will use whenever you open a new Terminal session:
nvm alias default 18.17.0
Replace 18.17.0 with the version number you wish to set as default.
Step 4: Verify the Installation
To confirm that Node.js and npm have been installed and are accessible, run the following commands:
node -v
npm -v
These commands should output the version numbers of Node.js and npm, respectively, that you just installed.
Managing Node.js Versions with nvm
One of the key advantages of nvm is its ability to manage multiple Node.js versions.
-
Listing Installed Versions:
nvm lsThis command shows all Node.js versions installed on your system and indicates which one is currently in use.
-
Uninstalling a Version:
nvm uninstall <version_number>For example,
nvm uninstall 16.14.0. -
Switching Between Versions:
Simply use thenvm usecommand followed by the desired version number. If you have multiple versions installed, you can easily switch between them depending on the requirements of the project you are working on.
Installing npm Separately (Not Recommended for Most Users)
While nvm handles npm installation as part of Node.js, there are rare scenarios where you might need to install or update npm independently. However, it’s crucial to understand that npm is tightly coupled with Node.js versions. Attempting to install a version of npm that is not compatible with your installed Node.js version can lead to unexpected errors and a broken environment.
If you absolutely must install or update npm separately, you can do so using npm itself. This is primarily for updating npm to its latest version after Node.js and its associated npm have been installed.
Updating npm using npm
Once Node.js and npm are installed (preferably via nvm), you can update npm to its latest stable version with the following command:
npm install -g npm@latest
Let’s break this down:
npm install: This is the command to install a package.-g: This flag signifies a global installation. Installing npm globally ensures that thenpmcommand is available from any directory in your Terminal.npm@latest: This specifies that you want to install the package namednpmand that you want thelatestavailable version.
After running this command, you should verify the updated npm version:
npm -v
Important Consideration: While this command updates your globally installed npm, it’s still dependent on the Node.js version currently active via nvm. If you switch to a different Node.js version, npm might revert to the version bundled with that Node.js release, or you might need to re-run the update command for that specific Node.js environment. This is another reason why managing Node.js versions with nvm is the preferred method, as it keeps the Node.js and npm versions in sync.
Troubleshooting Common Installation Issues
Despite careful following of instructions, you might encounter issues. Here are a few common ones and their solutions:
nvm: command not found
This error typically means that nvm has not been correctly loaded into your shell environment.
- Solution: Ensure you have correctly sourced your shell profile file (e.g.,
~/.zshrcor~/.bash_profile) after installing nvm. Close and reopen your Terminal window. If the issue persists, re-run the nvm installation script and carefully follow the instructions regarding shell configuration.
Inconsistent Node.js or npm Versions
You might find that running node -v and npm -v shows different versions than expected, or that changes made with nvm use don’t seem to take effect.
- Solution:
- Check Active Version: Always confirm the active Node.js version by running
nvm currentornvm ls. - Re-source Shell: Sometimes, simply re-sourcing your shell profile (
source ~/.zshrcorsource ~/.bash_profile) can resolve inconsistencies. - Verify Installation: Ensure you have installed the desired Node.js version using
nvm install <version>and then selected it withnvm use <version>. - Global vs. Local: Be mindful of global installations. The
npm install -gcommand installs packages globally for the currently active Node.js version. If you switch Node.js versions, you might need to reinstall global packages.
- Check Active Version: Always confirm the active Node.js version by running
Permissions Errors During Global Package Installation
When you run npm install -g <package>, you might encounter permission errors if npm tries to write to system directories where your user doesn’t have write access.
- Solution: The recommended way to avoid this is by using nvm. nvm installs Node.js and global npm packages within your user’s home directory, avoiding system-level permission issues. If you’ve installed Node.js directly without a version manager, you might need to configure npm’s global installation directory to a user-writable location or use
sudo(though this is generally discouraged for npm installations).

Conclusion
Installing and managing npm on your Mac is a critical step for any developer leveraging JavaScript for their projects, including those in the burgeoning field of drone technology. While direct installation of Node.js is possible, employing a Node version manager like nvm provides unparalleled flexibility, allowing you to seamlessly switch between different Node.js and npm versions required by various projects. By following the steps outlined in this guide, you can establish a clean, efficient, and adaptable development environment that empowers you to harness the full potential of npm and Node.js for your innovative endeavors. The ability to manage dependencies, run scripts, and utilize a vast ecosystem of packages is fundamental to modern software development, and a well-configured npm installation is your gateway to this powerful world.
