824

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

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

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

4

13 回答 13

983

介绍 npx:一个 npm 包运行器

NPM-管理,但执行起来并不容易。
NPX- 用于执行节点包的工具。

NPXNPM与版本捆绑在一起5.2+

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

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

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

您应该阅读的文档


新PM:

可能会在某个项目上本地安装一个包:

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

NP:

npx将检查是否<command>存在于$PATH或本地项目二进制文件中,并执行它。所以,对于上面的例子,如果你想执行本地安装的包some-package,你需要做的就是输入:

npx some-package

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

$ npx create-react-app my-app

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


用例示例:

npx当不需要定义可能不常用或任何其他原因的依赖项时,命令可能对文件script部分有所帮助:package.json

"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 文件?
于 2018-08-25T15:43:15.070 回答
133

npx是一个 npm 包运行器(x 可能代表 eXecute)。典型用途是临时下载和运行一个包或进行试用。

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

正如主页https://www.npmjs.com/package/npx中提到的,npx 默认可以在 PATH 或 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

于 2018-07-06T12:06:06.773 回答
112

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

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

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

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

np M - 经理

np X - 执行 - 容易记住

于 2019-05-11T22:42:39.690 回答
60

npm - JavaScript 的包管理器,就像:pip(Python),Maven(Java),NuGet(.NET),Composer(PHP),RubyGems(Ruby),...

npx - 运行包的命令而不显式安装它。

用例:

  • 您不想在全局或本地安装软件包。
  • 您无权在全局范围内安装它。
  • 只是想测试一些命令。
  • 有时,您希望有一个脚本命令(生成、转换某些内容,...)package.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

更多关于command

于 2018-12-17T05:46:33.837 回答
50

NP:

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

Web 开发人员可以在他们的开发机器上拥有数十个项目,每个项目都有自己特定的一组 npm 安装的依赖项。几年前,处理 Grunt 或 Gulp 等 CLI 应用程序的通常建议是将它们本地安装在每个项目中,也可以全局安装,以便可以轻松地从命令行运行它们。

但是在全球范围内安装导致的问题与解决的问题一样多。项目可能依赖于不同版本的命令行工具,使用大量开发特定的 CLI 工具污染操作系统也不是很好。今天,大多数开发人员更喜欢在本地安装工具并保留它。

本地版本的工具允许开发人员从 GitHub 拉取项目,而不必担心与全球安装的工具版本不兼容。NPM 可以只安装本地版本,你就可以开始了。但是项目特定的安装并非没有问题:如何在不指定其在项目中的确切位置或使用别名的情况下运行正确版本的工具?

这就是 npx 解决的问题。NPM 5.2 中包含一个新工具,npx 是一个小型实用程序,它足够智能,可以在从项目中调用它时运行正确的应用程序。

例如,如果你想运行本地版本的 mocha,你可以在项目中运行 npx mocha,它会按照你的期望运行。

npx 的一个有用的附带好处是它会自动安装尚未安装的 npm 包。因此,正如该工具的创建者 Kat Marchán 所指出的,您可以运行 npx benny-hill 而无需处理 Benny Hill 污染全球环境的问题。

如果您想试用 npx,请更新到最新版本的 npm。

于 2018-07-28T03:39:49.770 回答
26

简单定义:

npm - Javascript 包管理器

npx - 执行 npm 包二进制文件

于 2019-08-27T20:54:37.273 回答
13

这是 NPX 的一个示例:npx cowsay hello

如果你在你的 bash 终端中输入它,你会看到结果。这样做的好处是 npx 已经临时安装了 cowsay。由于没有永久安装cowsay,因此没有包装污染。这对于您想要避免包装污染的一次性包装非常有用。

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

于 2018-12-10T12:11:14.273 回答
12

NPM => 是一个 JS 包管理器。

NPX => 是一个执行 Node 包和执行 npm 包二进制文件的工具。

很容易记住:

-np m代表M ANAGER

-np x代表 E X ECUTE

于 2021-10-19T10:12:50.347 回答
8

NPM:NPM 代表 Node Package Manager,是 Node.js 的默认包管理器。它由 Isaac Z. Schlueter 开发,最初于 2010 年 1 月 12 日发布。它完全用 JavaScript 编写。它由一个命令行客户端 npm 组成,它管理所有 node.js 包和模块。安装 node.js 时,它包含在安装中。

npm run your-package-name

NPX是一个用来执行包的工具。

NPX 是 Node Package Execute 的缩写 NPX 包是 npm 自带的,所以当你在 5.2.0 以上安装 npm 时,会自动安装 NPX。

它是一个 npm 包运行程序,可以从 npm 注册表执行您想要的任何包,甚至无需安装该包。npx 在单次使用包中很有用。如果你安装了低于 5.2.0 的 npm,那么你的系统中没有安装 npx。

运行以下命令以确定是否安装了 npx:

npx -v

如果未安装 npx,则可以运行以下命令。

npm install -g npx

使用 npx 执行包:

npx your-package-name

NPM 与 NPX

于 2021-09-18T09:18:47.203 回答
3

最简单的定义:

NPX

npx 代表 Node Package Execute,它与 npm 一起提供,当您安装 npm 以上 5.2.0 版本时,将自动安装 npx。它是一个 npm 包运行程序,可以从 npm 注册表执行您想要的任何包,甚至无需安装该包。

新PM

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

于 2021-07-15T09:53:58.140 回答
0

简单的答案就像

NPX:用于执行任何节点包,无需在我们的机器上安装包。

NPM:用于在我们的机器上安装任何 node js 包。当我们使用 NPM 安装任何包时,我们可以使用 " require("package-name') "。但是当我们使用 NPX 时,我们不能导入包。

示例:您应该运行 npm i axios 在这种情况下,您正在本地机器上安装 axios 包

和 npx create-react-app 'app-name' 在这里你直接在你的机器上执行create-react-app包而不安装它的文件。

于 2022-03-01T05:54:30.307 回答
0

以下是您的应用创建可能使用的示例npx

npx create-react-app 项目名称 --template all

于 2021-03-08T21:51:05.167 回答
-3

实际上,我尝试了很多方法来解决这个问题,但都失败了,但最终 全局删除/删除 纱线 解决了这个问题

只需在命令行终端中键入此命令:

npm 卸载 -g 纱线

然后运行下面的命令来安装 react starter 项目

npx 创建反应应用程序

于 2021-06-03T05:59:31.020 回答