YouTip LogoYouTip

Npx Intro

> If you're just starting to learn JavaScript or Node.js, you've likely already used `npm` to install various tools and libraries. Sometimes we just want to quickly run a tool to see its effect, without globally installing it? > > > There's another situation: different projects require different versions of command-line tools, and global installation always leads to conflicts? > > > `npx` is a powerful tool born to solve these problems. **npx is a command-line tool introduced in npm version 5.2.0, allowing you to execute npm packages without global installation.** In simple terms, **npx is a convenient tool for executing Node.js packages**, and its core design philosophy is: **temporary use without permanent installation**. ### A Vivid Analogy Imagine your toolbox at home: * **npm** is like your **tool warehouse manager**. When you `npm install -g some-tool`, it's like telling the manager: buy this tool and keep it permanently in our garage (global environment). * **npx** is like an **on-demand delivery service**. When you `npx some-tool`, it's like telling the delivery person: go find me a `some-tool` to use, and return it when done, don't leave it at my place. With `npx`, you can run any package from the npm registry without first installing it on your computer. | Traditional Pain Points | npx Solution | | --- | --- | | Must install globally | Run directly | | Version conflicts | Use specified version each time | | Environment pollution | Clean up after use | | Hard to find local commands | Auto-locate | * * * ## Why Use npx? ### 1. Solve Global Package Pollution and Version Conflicts Before `npx`, if you wanted to use scaffolding tools like `create-react-app` or `vue-cli` in the command line, you had to install them globally first: `npm install -g create-react-app`. This brought two problems: * **Pollutes global environment**: Installed packages occupy disk space long-term, even if you don't use them for a long time. * **Version conflicts**: If you're developing two projects, one needing `create-react-app@3` and another needing `create-react-app@5`, global installation can only keep one version, causing one project to fail. `npx` allows you to directly specify and run a version, cleaning up after use, perfectly avoiding these issues. ### 2. Easily Run Locally Installed Packages In a project directory, packages installed via `npm install some-cli-tool` (appearing in `node_modules/.bin/` directory) usually can only be called through complex paths or npm scripts. `npx` can intelligently prioritize using the local version in the current project, making invocation very simple. ### 3. Safely and Conveniently Try New Tools Want to test a newly released command-line tool? Just try `npx new-cool-tool`! If it doesn't suit you, it won't leave any trace on your computer. * * * ## How npx Works When you execute `npx `, it follows this logic to find and execute the command: !(#) This process is completely transparent to usersโ€”you just enjoy the convenience it brings. * * * ## How to Use npx? ### Environment Preparation Ensure your Node.js version >= 5.2.0, which can be checked with: node --version npm --version # If npm version >= 5.2.0, npx is already available npx --version ### Basic Syntax npx [@version] [command arguments...] ### Common Options Explanation | Option | Full Name | Description | | --- | --- | --- | | `--no-install` | | Force npx to only use locally existing packages; if not found locally, error out without downloading. | | `--ignore-existing` | | Ignore locally existing packages, force download latest version from remote. | | `-p, --package ` | | Specify package to install. Very useful when needing to use multiple packages simultaneously. | | `-c ` | | When using `-p` to specify multiple packages, use `-c` to tell npx the specific command to execute. | | `--yes` | | In cases known to trigger prompts (like create-react-app asking whether to continue), automatically answer "yes". | * * * ## Practical Application Examples Let's see how `npx` shines through several concrete examples. ### Example 1: Running One-off Commands (Most Common Scenario) You want to use the fun little `cowsay` tool to make a cow talk in the terminal, but you don't want to install it. **Step 1: Directly use npx to run** npx cowsay hello **Code explanation**: `npx` checks if `cowsay` exists locally; if not, automatically downloads from npm, and cleans up after execution. **Expected result**: npx cowsay hello Need to install the following packages:cowsay@1.6.0Ok to proceed? (y) y _______ ------- ^ __ ^ (oo)_______ ( __ ) )/ ||----w | || || **Step 2: Run with specified version** If you want a specific version: npx cowsay@1.4.0 hello1.4.0 Output: ____________ ------------ ^ __ ^ (oo)_______ ( __ ) )/ ||----w | || || ### Example 2: Using Scaffolding to Create Projects Using React project creation as an example: **Traditional method (no longer recommended)**: npm install -g create-react-app # Global install create-react-app my-app # Use Problems with this installation method: * Global installation of many tools * Version chaos * Computer becoming increasingly bloated **Modern method (using npx)**: npx create-react-app my-app **Code explanation**: `npx` temporarily fetches the latest version of `create-react-app`, uses it to scaffold the project, and doesn't leave `create-react-app` in your global environment. Next time you create a project, it will still fetch the latest version. ### Example 3: Running Project Local Tools Assume you've installed `webpack` as a dev dependency in a project (`npm install webpack --save-dev`). **Traditional invocation method (very troublesome)**: # Need to input lengthy path./node_modules/.bin/webpack --version # Or configure in package.json# "scripts": { "build": "webpack" }# Then run npm run build **Using npx (very concise)**: npx webpack --version # Or directly run build npx webpack **Code explanation**: `npx` intelligently finds and executes `webpack` under the project's `node_modules`. ### Example 4: Executing Scripts from GitHub `npx` can even run code from GitHub gists or repositories. npx https://gist.github.com/username/abcdefg Please note that running unknown code from the internet poses security risks; always ensure the source is trustworthy. * * * ## Three Core Capabilities of npx ### 1. Directly Run Any npm Package General format: npx package-name Example: npx cowsay hello Will directly run a command-line cow ๐Ÿฎ ### 2. Run Project Local Dependencies Many tools are only installed in projects: npm install vite Previously you had to: ./node_modules/.bin/vite Now: npx vite Automatically finds the local executable for you ### 3. Execute with Latest Version (Without Polluting System) npx create-next-app@latest my-app Always use the latest scaffolding version No need to upgrade global tools * * * ## Most Common npx Scenarios ### Creating Projects npx create-react-app my-app npx create-next-app npx vue-cli create my-vue npx degit user/repo ### Temporary Tools npx eslint . npx prettier --write . npx serve . ### Running Development Servers npx vite npx nodemon app.js * * * ## Advanced Tips and Considerations ### 1. Combining Multiple Packages Sometimes a command needs dependencies on multiple packages. For example, you want to start a simple HTTP server in a directory while simultaneously using `browser-sync` for live reload. Though uncommon, `npx` can do this: npx -p http-server -p browser-sync -c 'http-server & browser-sync start --proxy "localhost:8080" --files "**/*"' **Code explanation**: * `-p` specifies packages to prepare. * `-c` specifies the complete command string to run. ### 2. Considerations * **Network connection**: First time running a package, it needs to download from network; speed depends on your connection. * **Security**: `npx` automatically downloads and executes code. **Only run sources and packages you trust**. * **Temporary directory**: Downloaded packages are stored in the operating system's temporary directory, which may be periodically cleaned by the system.
โ† Vue3 Taskhub OptimizationNodejs Pnpm โ†’