npm 与 npx 什么关系?又有哪些区别?

4,921 阅读2分钟

NPM

npm 全称Node Package Manager,它是Node.js的软件包管理器,其目标是自动化的依赖性和软件包管理。

这意味着,可以在package.json文件中为项目指定所有依赖项(软件包),当需要为其安装依赖项时,只要运行npm install就可以。

npm 本身不能够执行任何包,对于本地项目的包,如果想要执行,则需要写入到 package.json 里面,然后通过 npm 来解析 package.json 文件,解析到包的 bin 文件路径,在 bash 中执行。 在这里插入图片描述

NPX

npx是一个工具,npm v5.2.0引入的一条命令(npx),一个npm包执行器,指在提高从npm注册表使用软件包时的体验 ,npm使得它非常容易地安装和管理托管在注册表上的依赖项,npx使得使用CLI工具和其他托管在注册表。

所以现在大部分的开发者都可以直接使用到 npx 的功能。

npx 仍然是一个简单的 cli 工具,来让我们更加方便的执行一些 npm 包,而不用通过 npm 来将包安装到开发者的电脑上面。

主要特点: 1、临时安装可执行依赖包,不用全局安装,不用担心长期的污染。 2、可以执行依赖包中的命令,安装完成自动运行。 3、自动加载node_modules中依赖包,不用指定$PATH。 4、可以指定node版本、命令的版本,解决了不同项目使用不同版本的命令的问题。

总结

npx 为 npm 文件执行功能进行了一些扩展,提供了一种使用 node.js CLI 工具的新方式,这种方式比起以前的执行方式更加灵活,并且对于本地环境变量的污染更小(你可以到自己的 node 安装目录下看一下,有多少个 bin 目录下的软连接在污染你的环境变量)。指定包版本的功能可以让我们更灵活地测试一些新的功能,而不用进行升级和降级,还是能够带来很多方便的。