npm 与 npx

2025-05-25

npm 与 npx

如果您一直在使用Node.js,那么您可能遇到过 和npmnpx虽然
它们听起来很相似,并且都是 Node.js 生态系统的重要组成部分,但它们的用途却不同。本文将探讨npm和之间的区别npx,帮助您了解何时以及为何使用它们。

什么是 NPM?

NPM 是Node 包管理器的缩写,是 Node.js 的默认包管理器。它允许开发人员在其项目中安装、共享和管理包(库或代码模块)。

以下是一些npm有助于完成的常见任务:

  • 安装依赖项:
npm install <package-name>
Enter fullscreen mode Exit fullscreen mode
  • 管理包版本:锁定库的特定版本以确保一致的构建。

  • 运行项目特定的脚本:在文件中定义package.json

npm run <script-name>
Enter fullscreen mode Exit fullscreen mode

什么是 NPX?

npx是 NPM 版本 5.2.0(2017 年 7 月)中引入的工具。npm 管理依赖项和包,而 npx 旨在执行 Node.js 包,尤其是 CLI 工具,而无需全局安装它们。

NPM 和 NPX 之间的主要区别

1. 软件包安装与执行

  • NPM:当你使用 安装包时npm,它会将包安装到全局或本地项目目录中。这意味着你必须先安装包才能使用它。
npm install -g create-react-app
create-react-app my-app
Enter fullscreen mode Exit fullscreen mode
  • NPX:使用npx,您可以运行 CLI 工具或可执行文件,而无需全局安装它们。例如,您可以运行 create-react-app,而无需全局安装它。
npx create-react-app my-app
Enter fullscreen mode Exit fullscreen mode

由于您避免安装可能只使用一次的软件包,因此可以节省时间和磁盘空间。


2. 全局包
当您使用时npm,全局包会被安装并在整个系统中持续存在,这有时会使您的环境变得混乱。

使用 npx,您可以执行包而不必担心将其永久保留在您的系统中。

使用以下命令全局安装包的示例npm

npm install -g typescript
tsc --version

Enter fullscreen mode Exit fullscreen mode

有了npx,就不需要全局安装:

npx tsc --version
Enter fullscreen mode Exit fullscreen mode

3. 自动包处理
当你使用 运行命令时npx,它会自动检查包是否存在于本地或全局,如果不存在,则会临时下载并执行。这对于运行一次性任务尤其有用。

例如:

npx cowsay "Hello, World!"
Enter fullscreen mode Exit fullscreen mode

如果未安装,这将下载 cowsay 包,运行它,然后进行清理。


4. 不使用脚本打包可执行文件当使用运行脚本
中定义的命令时,您可以这样写:package.jsonnpm

npm run my-script
Enter fullscreen mode Exit fullscreen mode

但是有了npx,您可以直接运行可执行命令:

npx my-script
Enter fullscreen mode Exit fullscreen mode

如果脚本未在中明确定义,这将特别有用package.json

何时使用 NPM

- 管理依赖项:用于npm安装、更新和删除项目依赖项。

- 运行项目特定的脚本:package.json在您的项目中定义并定制。

- 管理包版本:锁定库的特定版本以保持项目一致性。

何时使用 NPX

- 一次性包执行:用于npx您不想全局安装的包,例如您只使用一次的 CLI 工具。

- 运行可执行文件:对于 create-react-app 之类的命令,npx 允许您无需全局安装即可运行它们。

- 测试不同版本:快速执行工具的特定版本,而无需安装它。

最后,npm和都是Node.jsnpx生态系统中必不可少的工具,但它们的用途不同。它们用于管理项目的依赖项以及执行无需永久安装的软件包。npmnpx

这个小小的区别可以使您的工作流程更加高效,节省时间并避免不必要的全局安装。

文章来源:https://dev.to/jagroop2001/npm-vs-npx-1anc
PREV
我正在开发软件,不再使用 Google 了。
NEXT
使用 Socket.io、Express、React.js 和 Chakra UI 构建实时聊天应用程序(Vite 设置)