npm 与 npx
如果您一直在使用Node.js,那么您可能遇到过 和npm
。npx
虽然
它们听起来很相似,并且都是 Node.js 生态系统的重要组成部分,但它们的用途却不同。本文将探讨npm
和之间的区别npx
,帮助您了解何时以及为何使用它们。
什么是 NPM?
NPM 是Node 包管理器的缩写,是 Node.js 的默认包管理器。它允许开发人员在其项目中安装、共享和管理包(库或代码模块)。
以下是一些npm
有助于完成的常见任务:
- 安装依赖项:
npm install <package-name>
-
管理包版本:锁定库的特定版本以确保一致的构建。
-
运行项目特定的脚本:在文件中定义
package.json
。
npm run <script-name>
什么是 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
- NPX:使用
npx
,您可以运行 CLI 工具或可执行文件,而无需全局安装它们。例如,您可以运行 create-react-app,而无需全局安装它。
npx create-react-app my-app
由于您避免安装可能只使用一次的软件包,因此可以节省时间和磁盘空间。
2. 全局包
当您使用时npm
,全局包会被安装并在整个系统中持续存在,这有时会使您的环境变得混乱。
使用 npx,您可以执行包而不必担心将其永久保留在您的系统中。
使用以下命令全局安装包的示例npm
:
npm install -g typescript
tsc --version
有了npx
,就不需要全局安装:
npx tsc --version
3. 自动包处理
当你使用 运行命令时npx
,它会自动检查包是否存在于本地或全局,如果不存在,则会临时下载并执行。这对于运行一次性任务尤其有用。
例如:
npx cowsay "Hello, World!"
如果未安装,这将下载 cowsay 包,运行它,然后进行清理。
4. 不使用脚本打包可执行文件当使用运行脚本
中定义的命令时,您可以这样写:package.json
npm
npm run my-script
但是有了npx
,您可以直接运行可执行命令:
npx my-script
如果脚本未在中明确定义,这将特别有用package.json
。
何时使用 NPM
- 管理依赖项:用于npm
安装、更新和删除项目依赖项。
- 运行项目特定的脚本:package.json
在您的项目中定义并定制。
- 管理包版本:锁定库的特定版本以保持项目一致性。
何时使用 NPX
- 一次性包执行:用于npx
您不想全局安装的包,例如您只使用一次的 CLI 工具。
- 运行可执行文件:对于 create-react-app 之类的命令,npx 允许您无需全局安装即可运行它们。
- 测试不同版本:快速执行工具的特定版本,而无需安装它。
最后,npm
和都是Node.jsnpx
生态系统中必不可少的工具,但它们的用途不同。它们用于管理项目的依赖项以及执行无需永久安装的软件包。npm
npx
这个小小的区别可以使您的工作流程更加高效,节省时间并避免不必要的全局安装。
文章来源:https://dev.to/jagroop2001/npm-vs-npx-1anc