提问者:小点点

npx和NPM的区别?


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

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

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


共3个答案

匿名用户

NPXNPM版本5.2+
捆绑在一起

npm本身并不简单地运行任何包。事实上,它没有运行任何包。如果要使用NPM运行包,则必须在package.json文件中指定该包。

当可执行文件通过NPM包安装时,NPM链接到它们:

  1. 本地安装具有在./node_modules/.bin/目录中创建的“链接”。
  2. 全局安装具有从Linux上的全局bin/目录(例如/usr/local/bin)或Windows上的%AppData%/npm创建的“链接”。

应该阅读的文档

可以在某个项目上本地安装包:

npm install some-package

现在假设您希望NodeJS从命令行执行该包:

$ some-package

以上都将失败。只有全局安装的软件包才能通过键入它们的名称来执行。

要修复此问题并使其运行,必须键入本地路径:

$ ./node_modules/.bin/some-package

从技术上讲,您可以通过编辑packages.json文件并将该包添加到scripts部分来运行本地安装的包:

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

然后使用npm run-script(或npm run)运行脚本:

npm run some-package

NPX将检查是否存在于$path或本地项目二进制文件中,并执行它。因此,对于上面的示例,如果希望执行本地安装的包some-package,只需键入:

npx some-package

NPX的另一个主要优点是能够执行以前未安装的包:

$ npx create-react-app my-app

上面的示例将在运行命令的路径内生成一个react应用程序样板,并确保您始终使用最新版本的生成器或构建工具,而不必每次使用时都进行升级。

当不希望定义不常用的依赖项或任何其他原因时,npx命令可能会在package.json文件的script部分中提供帮助:

"scripts": {
    "start": "npx gulp@3.9.1",
    "serve": "npx http-server"
}

调用:NPM run serve

  1. 如何使用本地安装在node_modules中的包?
  2. NPM:如何获取./node_modules/.bin文件夹?
  3. 如何使用npm脚本运行js文件?

匿名用户

npx是一个npm包运行器(x可能代表执行)。典型的用途是临时下载并运行一个包或用于试用。

create-react-app是一个npm包,在项目的生命周期中只运行一次。因此,最好使用npx在一个步骤中安装和运行它。

正如手册页https://www.npmjs.com/package/npx中提到的,默认情况下,npx可以在路径中或从node_modules/.bin运行命令。

注意:通过一些挖掘,我们可以发现create-react-app指向在节点环境中执行的Javascript文件(在Linux系统上可能指向/usr/lib/node_modules/create-react-app/index.js)。这只是一个执行某些检查的全局工具。实际的设置是由react-scripts完成的,其最新版本安装在项目中。有关更多信息,请访问https://github.com/facebook/create-react-app。

匿名用户

NPM是一个包管理器,您可以使用NPM安装node.js包

NPX是一个执行node.js包的工具。

无论您是在全局还是本地安装该软件包,都无关紧要。NPX将临时安装它并运行它。如果您配置了package.json文件并将其包含在脚本部分中,NPM也可以运行包。

所以请记住这一点,如果您想快速检查/运行一个节点包,而无需本地或全局安装,请使用NPX。

npM-经理

npx-execute-易于记忆