我刚刚开始学习React, Facebook通过提供以下现成的项目来帮助简化初始设置。

如果我必须安装框架项目,我必须在命令行中键入npx create-react-app my-app。

我想知道为什么Facebook在Github有npx create-react-app my-app而不是npm create-react-app my-app?


当前回答

NPM是用来安装包的工具,NPX是用来执行包的工具。 如果你想通过npm运行一个包,那么你必须在你的包中指定这个包。并在本地安装它。 npx-一个包不需要安装就可以执行。它是一个npm包运行器,所以如果任何包还没有安装,它会自动安装它们。

其他回答

NPM代表节点包管理器。 它预装在Node.js中。NPM有助于将项目中的包作为依赖项来管理。

在使用NPM时,有两种方法将包安装到本地计算机中。

本地:当一个包在本地安装时,它被安装在 ./node_modules/.bin/ 全局:在用户环境中安装全局包 路径。Linux为“/usr/local/bin”,Windows为“AppData%/npm”。

要执行本地安装的包,应该在包中指定。Json脚本块如下所示。

"scripts": {
    "your-package":  "your-package-name"
}

然后,你可以执行这个包:

npm run your-package-name

NPX是一个NPM包执行器。 目前,当你安装NPM 5.2.0或更高版本时,NPX与NPM捆绑在一起。

为什么NPX胜过NPM?

不需要编辑包。带有node_modules路径的Json文件。 您可以直接从命令行执行该工具。

下面是一个使用npx创建应用程序的示例

NPX create-react-app project-name——template all

NPM vs NPX

NPM代表节点包管理器。一个基于文本的Nodejs包管理程序。

而NPX是一个节点包运行器。它的功能是执行Nodejs包

NPX将执行Nodejs包中的二进制文件,无论是否安装。

甚至NPX也可以帮助我们使用某些版本的Nodejs,而不必使用nvm (node.js版本管理)、nave (node.js虚拟环境)和nvm (node.js版本管理)。

这里有一个NPX的例子:NPX cowsay hello

如果您将其输入到bash终端,您将看到结果。这样做的好处是npx临时安装了cowsay。没有包装污染,因为cowsay不是永久安装的。这对于想要避免包装污染的一次性包装非常有用。

正如在其他回答中提到的,npx在运行前需要安装并配置包的情况下也非常有用(使用npm)。例如,不用使用npm来安装和配置json。包文件,然后调用配置的运行命令,只需使用NPX代替。一个真实的例子: create-react-app my-app

另一方面,npx使用的包并不是全局安装的,所以你必须担心长期的污染。