Introduction

If you work with JavaScript or Node.js, you’ve likely used both npm and npx. They sound similar and both come bundled with Node.js, but they serve different purposes. npm (Node Package Manager) is for installing and managing packages in your project. npx (Node Package Execute) is for running packages without permanently installing them. This guide explains the differences, when to use each, and how they work together in your daily workflow.
What is npm?
The package manager for Node.js
npm is the default package manager for Node.js. It downloads packages from the npm registry and installs them into your project’s node_modules folder. When you run npm install, packages are saved to package.json and become part of your project. npm handles dependency resolution, version management, scripts, and publishing packages. It’s the tool you use to add, remove, and update dependencies over the lifetime of your project.
Common npm Commands
npm Commands
# Install all dependencies from package.json
npm install
# Install a package (adds to node_modules and package.json)
npm install lodash
# Install a dev dependency
npm install --save-dev jest
# Run a script from package.json
npm run build
What is npx?
Execute packages without installing them globally
npx is a package runner that comes with npm (v5.2.0+). It executes packages without requiring you to install them globally or add them to your project. When you run npx create-react-app my-app, npx downloads the package (if needed), runs it, and can discard it afterward. This is useful for scaffolding tools, one-off commands, and trying packages without cluttering your project. npx can also run packages that are already installed locally in node_modules.
Common npx Use Cases
npx Commands
# Create a new React app (no global install needed)
npx create-react-app my-app
# Run a package without installing
npx cowsay "Hello World"
# Run a specific version of a package
npx create-next-app@latest my-next-app
# Execute a local package from node_modules
npx jest
Key Differences: npm vs npx
Installation vs execution at a glance
npm installs packages. It manages dependencies, updates package.json, and populates node_modules. You use npm when you want to add a package to your project for ongoing use. npx runs packages. It can execute a package without installing it, or run a locally installed binary. You use npx when you want to run a one-off command, use a scaffolding tool, or try a package without installing it. Think of npm as “add to project” and npx as “run once.”
- npm — Installs packages into
node_modules, manages dependencies, runs scripts frompackage.json - npx — Runs packages (installed or not), executes binaries, no permanent install required
- npm — Use for:
npm install,npm run, adding/removing dependencies - npx — Use for:
create-react-app, one-off CLI tools, running specific package versions
When npx Runs Without Installing
If the package isn’t installed, npx fetches it from the registry, runs it, and by default stores it in a cache. The next time you run the same command, npx uses the cached version. You can force a fresh run with npx --no-install <package> (fails if not installed) or ensure the latest version with npx --yes <package> to skip the install prompt.
Practical Examples
Scenarios where npm and npx shine
Scenario 1: Creating a New Project
You want to scaffold a Next.js app. With npm, you’d first install Create Next App globally (npm install -g create-next-app), then run it. With npx, you skip the global install: npx create-next-app@latest my-app. npx runs the latest version without polluting your global packages.
Scenario 2: Running a Build Tool
You have vite as a dev dependency. You can run it via npm run dev (if defined in package.json) or npx vite. Both execute the local Vite binary. npx is handy when the script name doesn’t match the package name or when you want to pass arguments directly.
Scenario 3: One-Off Commands
Need to check for outdated packages? Run npx npm-check-updates without installing it. Want to serve a static folder? npx serve ./dist. These tools run on demand and don’t need to live in your package.json.
Conclusion
Use both together in your workflow
npm and npx complement each other. Use npm to install and manage your project’s dependencies. Use npx to run packages on demand, scaffold projects, or try tools without installing them. Both come with Node.js, so no extra setup is needed. Understanding when to reach for each makes your JavaScript workflow smoother and your projects cleaner.
Key Takeaways:
- npm = install and manage packages; npx = run packages
- Use npm for dependencies, scripts, and project setup
- Use npx for scaffolding, one-off commands, and running without install
- npx comes with npm (Node.js 5.2+)—no separate install
npm installs and manages packages. npx runs packages without requiring a permanent install. npm adds to node_modules; npx executes on demand.
Do I need to install npx separately?
No. npx is bundled with npm since version 5.2.0. If you have Node.js installed, you already have npx.
When should I use npx instead of npm?
Use npx for one-off commands (create-react-app, scaffolding tools), running a package without installing it, or executing a specific version of a package.
Can npx run locally installed packages?
Yes. npx first checks node_modules for the package. If found, it runs the local version. If not, it can fetch and run from the registry.
Leave a Reply