我刚刚开始学习React, Facebook通过提供以下现成的项目来帮助简化初始设置。
如果我必须安装框架项目,我必须在命令行中键入npx create-react-app my-app。
我想知道为什么Facebook在Github有npx create-react-app my-app而不是npm create-react-app my-app?
我刚刚开始学习React, Facebook通过提供以下现成的项目来帮助简化初始设置。
如果我必须安装框架项目,我必须在命令行中键入npx create-react-app my-app。
我想知道为什么Facebook在Github有npx create-react-app my-app而不是npm create-react-app my-app?
当前回答
NPM vs NPX
NPM代表节点包管理器。一个基于文本的Nodejs包管理程序。
而NPX是一个节点包运行器。它的功能是执行Nodejs包
NPX将执行Nodejs包中的二进制文件,无论是否安装。
甚至NPX也可以帮助我们使用某些版本的Nodejs,而不必使用nvm (node.js版本管理)、nave (node.js虚拟环境)和nvm (node.js版本管理)。
其他回答
实际上,我尝试了很多方法来解决这个问题,但都失败了,最终全局删除/删除yarn解决了这个问题
只需在命令行终端输入以下命令:
NPM卸载yarn
然后运行下面的命令来安装react starter项目
npx create-react-app
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文件。 您可以直接从命令行执行该工具。
npm - JavaScript包管理器,就像:pip (Python), Maven (Java), NuGet (.NET), Composer (PHP), RubyGems (Ruby),…
NPX—运行包的命令而不显式地安装它。
用例:
您不希望既全局安装包,也不希望在本地安装包。 您没有全局安装它的权限。 只是想测试一些命令。 有时,您希望在包中有一个脚本命令(生成、转换某些东西……)。Json来执行一些东西,而不需要将这些包作为项目的依赖项安装。
语法:
npx [options] [-p|--package <package>] <command> [command-arg]...
软件包可选:
npx -p uglify-js uglifyjs --output app.min.js app.js common.js
+----------------+ +--------------------------------------------+
package (optional) command, followed by arguments
例如:
Start a HTTP Server : npx http-server
Lint code : npx eslint ./src
# Run uglifyjs command in the package uglify-js
Minify JS : npx -p uglify-js uglifyjs -o app.min.js app.js common.js
Minify CSS : npx clean-css-cli -o style.min.css css/bootstrap.css style.css
Minify HTML : npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace
Scan for open ports : npx evilscan 192.168.1.10 --port=10-9999
Cast video to Chromecast : npx castnow http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4
更多关于命令的内容:
https://docs.npmjs.com/files/package.json#bin https://github.com/mishoo/UglifyJS2/blob/master/package.json#L17
简单的答案是
NPX:用于执行任何节点包,而无需在我们的机器上安装包。
NPM:用于在我们的机器上安装任何node js包。当我们使用NPM安装任何包时,我们可以使用"require("package-name')"。但是我们在使用NPX的时候不能导入这个包。
示例:你应该运行npm i axios 在本例中,您正在本地机器上安装axios包
NPX create-react-app 'app-name' 在这里,你直接在你的机器上执行create-react-app包,而不安装它的文件。
这里有一个NPX的例子:NPX cowsay hello
如果您将其输入到bash终端,您将看到结果。这样做的好处是npx临时安装了cowsay。没有包装污染,因为cowsay不是永久安装的。这对于想要避免包装污染的一次性包装非常有用。
正如在其他回答中提到的,npx在运行前需要安装并配置包的情况下也非常有用(使用npm)。例如,不用使用npm来安装和配置json。包文件,然后调用配置的运行命令,只需使用NPX代替。一个真实的例子: create-react-app my-app