nodejs:告别全局安装,npx 命令详解及其与 npm 的区别
在 nodejs
中,npx
扮演着一个方便的工具角色,它与我们熟悉的 npm
既有联系又有明显的区别。下面将详细解释 npx
的作用以及它与 npm
的不同之处。
npx
的作用
npx
是一个 npm 包执行器,自 npm 5.2.0 版本开始,它就与 npm 捆绑在一起。 npx
的主要目的是提升从 npm 注册表中使用软件包的体验。
npx
最核心的功能是让我们能够直接运行 npm 包中的可执行文件,而无需进行全局安装。 当我们执行一个命令时,npx
会检查该命令是否存在于我们的项目本地的 node_modules/.bin
目录或者系统的环境变量 $PATH
中。如果存在,它会直接执行;如果不存在,npx
会临时下载对应的包,执行完命令后,通常会将下载的包删除,从而避免了在本地留下不必要的依赖包。
在 npx hardhat
命令中:
npx
负责执行hardhat
这个包。hardhat
是一个用于以太坊智能合约开发的流行框架,它提供了一系列工具和插件来帮助开发者进行编译、测试和部署等工作。- 通过
npx hardhat
,我们可以直接使用hardhat
提供的各种命令,例如npx hardhat compile
(编译合约) 或npx hardhat test
(运行测试),而不需要先将hardhat
全局安装到我们的电脑上。
npx
和 npm
的区别
虽然 npx
是 npm
的一部分,但它们的侧重点不同,可以总结为以下几点:
特性 | npx | npm |
---|---|---|
核心功能 | 执行 npm 包中的可执行文件。 | 管理 (安装、卸载、更新) Node.js 包。 |
安装方式 | 通常无需全局或本地安装包即可执行。 | 需要先通过 npm install 命令安装包才能使用。 |
使用场景 | * 临时或一次性使用的命令行工具。 * 避免全局安装,减少版本冲突。 * 方便地使用不同版本的工具。 | * 管理项目的依赖项。 * 发布自己的包到 npm 仓库。 |
对包的处理 | 临时下载包,执行后通常会删除,不污染全局环境。 | 将包安装到项目的 node_modules 目录或全局目录中。 |
举个例子来理解它们的区别:
- 使用
npm
: 如果我们想使用create-react-app
来创建一个新的 React 项目,我们可能需要先全局安装它:npm install -g create-react-app
,然后再执行create-react-app my-app
。 - 使用
npx
: 我们可以直接运行npx create-react-app my-app
。npx
会自动下载最新版本的create-react-app
,运行它来创建项目,然后完成任务。我们不需要担心全局安装或者包的版本问题。
总结
总的来说,npx
是一个非常实用的工具,它极大地简化了 Node.js 开发者的工作流程。 它让我们能够轻松地运行各种命令行工具,而无需担心全局安装带来的版本冲突和环境污染问题。而 npm
则更侧重于项目依赖的管理和包的安装。在 npx hardhat
这个命令中,npx
让我们能够便捷地直接使用 hardhat
这个强大的以太坊开发框架所提供的各种功能。