npx和npm的区别?

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

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

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

329864 次浏览

npx是一个npm包运行器(x可能代表eXecute)。使用npx的一种常见方法是临时下载并运行包或进行试用。

创建-反应-应用是一个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-脚本完成的,其最新版本安装在项目中。更多信息请参阅https://github.com/facebook/create-react-app

NPX:

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

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

但是全局安装引起的问题和它解决的问题一样多可能取决于不同版本的命令行工具,并且污染具有许多特定于开发的CLI工具的操作系统不是也不错。今天,大多数开发人员更喜欢在本地安装工具就这样吧

本地版本的工具允许开发人员从GitHub拉取项目无需担心与全球安装的不兼容版本的工具。NPM可以安装本地版本,你很好但是具体项目的安装并不是没有他们的问题:如何运行正确版本的工具而不指定其在项目中的确切位置或玩弄别名?

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

例如,如果您想运行mocha的项目本地版本,你可以在项目中运行npx mocha,它会做你想做的事情期待。

npx的一个有用的附带好处是它会自动安装npm尚未安装的包。因此,作为该工具的创建者KatMarchán指出,你可以运行npx Benny-Hill而无需处理班尼·希尔污染了全球环境。

如果您想使用npx,请更新到最新版本#npm

介绍npx:一个npm包运行器

NPM-管理不会让生活变得轻松执行任何。
NPX-执行节点包的工具。

NPXNPM版本5.2+捆绑在一起

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

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

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

您应该阅读的文档


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:

npx将检查<command>是否存在于$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的例子:npx Cowsay Hello

如果您在bash终端中键入它,您将看到结果。这样做的好处是npx暂时安装了Cowsay。由于Cowsay没有永久安装,因此没有软件包污染。这对于想要避免软件包污染的一次性软件包非常有用。

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

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-serverLint code                : npx eslint ./src# Run uglifyjs command in the package uglify-jsMinify JS                : npx -p uglify-js uglifyjs -o app.min.js app.js common.jsMinify CSS               : npx clean-css-cli -o style.min.css css/bootstrap.css style.cssMinify HTML              : npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespaceScan for open ports      : npx evilscan 192.168.1.10 --port=10-9999Cast video to Chromecast : npx castnow http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4

更多关于command

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

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

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

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

npM-管理员

npX-执行-容易记住

简单定义:

npm-Javascript包管理器

npx-执行npm包二进制文件

以下是使用npx创建应用程序的示例

应用创建-反应-项目名称

实际上,我尝试了很多方法来解决这个问题,但最终失败了,但最终在全球范围内排名第一。

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

npm卸载-g纱

然后运行下面的命令来安装反应启动项目

npx create-react-app开发流程

最简单的定义:

NPX

npx代表Node Package Execute,它附带了npm,当您安装npm 5.2.0以上版本时,npx将自动已安装。它是一个可以执行任何包的npm包运行器您需要从npm注册表中删除的内容,甚至无需安装包。

NPM

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

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 VS NPX

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

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

很容易记住:

-npm代表MANAGER

-npx代表EXECUTE

简单的答案是

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

NPM:用于在我们的机器中安装任何节点js包。当我们使用NPM安装任何包时,我们可以使用“需要("包名称')”,但当我们使用NPX时,我们无法导入包。

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

和npx create-react-app'app-name'在这里,您直接在您的机器上执行创建-反应-应用包,而无需安装它的文件。

另一方面,npm是包管理器或安装程序npx使用的包不是全局安装的,因此您必须长期担心污染。

简单地说,npm是节点包管理器npx是运行npm包的可执行版本

npm是一个用于安装包的工具,npx是一个用于执行包的工具。如果你想通过npm运行包,那么你必须在package.json中指定该包并在本地安装它。npx-A包可以在不安装包的情况下执行。它是一个npm包运行器,因此如果任何包尚未安装,它将自动安装它们。

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

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

  1. 本地:当一个包安装在本地时,它安装在./node_modules/. bin/的本地项目目录。

  2. 全球:用户环境中安装了一个全局包路径。Linux的 /usr/local/bin和Windows的AppData%/npm。

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

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

然后,您可以使用以下命令执行该包:

npm run your-package-name

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

为什么NPX超过NPM?

  • 无需编辑具有node_modules路径的package.json文件。

  • 您可以直接从命令行执行该工具。

NPM和NPX之间的区别如下:

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

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

NPX是一个在新项目中创建和执行某些功能的工具NPM是包含所有库的包管理器

npm-包管理器

npx-执行npm包

这是与它的区别。

NPM vs. NPX

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

而NPX是一个Node Package Runner。它的功能是执行Nodejs包

NPX将从Nodejs包中执行二进制文件,包括已安装和未安装的文件。

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

这是一个简单的定义。NPM是一个包管理器,您可以使用NPM安装node.js包

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

NPM代表Node Package Manager。NPM是Node.JS的默认包管理器。它是用JavaScript编写的。NPM的作用是管理node.js.的包和模块

NPX代表Node Package Execute。NPX附带npm,当npm安装在5.2.0版本以上时,它会自动安装。NPX是一个npm包运行器,它的作用是从注册表执行包,甚至无需安装该包。

现在,NPM和NPX之间的区别如下:

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

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