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

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

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


当前回答

NPX:

从https://www.futurehosting.com/blog/npx-makes-life-easier-for-node-developers-plus-node-vulnerability-news/:

Web developers can have dozens of projects on their development machines, and each project has its own particular set of npm-installed dependencies. A few years back, the usual advice for dealing with CLI applications like Grunt or Gulp was to install them locally in each project and also globally so they could easily be run from the command line. But installing globally caused as many problems as it solved. Projects may depend on different versions of command line tools, and polluting the operating system with lots of development-specific CLI tools isn’t great either. Today, most developers prefer to install tools locally and leave it at that. Local versions of tools allow developers to pull projects from GitHub without worrying about incompatibilities with globally installed versions of tools. NPM can just install local versions and you’re good to go. But project specific installations aren’t without their problems: how do you run the right version of the tool without specifying its exact location in the project or playing around with aliases? That’s the problem npx solves. A new tool included in NPM 5.2, npx is a small utility that’s smart enough to run the right application when it’s called from within a project. If you wanted to run the project-local version of mocha, for example, you can run npx mocha inside the project and it will do what you expect. A useful side benefit of npx is that it will automatically install npm packages that aren’t already installed. So, as the tool’s creator Kat Marchán points out, you can run npx benny-hill without having to deal with Benny Hill polluting the global environment. If you want to take npx for a spin, update to the most recent version of npm.

其他回答

NPM与NPX的区别如下:

i) NPM用于安装包,NPX用于执行包。

ii)由于npm的缘故,安装的包必须被照顾,因为它是全局安装的,而npx使用的包不需要被照顾,因为它们不是全局安装的。

简单的定义:

NPX

npx代表节点包执行,它随npm而来, 当你在5.2.0版本以上安装NPM时,NPX会自动自动的 安装。它是一个npm包运行器,可以执行任何包 你想从NPM注册表中得到的,甚至不需要安装它 包中。

NPM

npm是JavaScript编程语言的包管理器 的默认包管理器 JavaScript运行时环境。它由一个命令行组成 客户端,也叫npm,是一个公共和付费的在线数据库 私人包

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

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

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

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

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文件。 您可以直接从命令行执行该工具。