我刚刚开始学习 React,Facebook 通过提供 following ready-made project 帮助简化了初始设置。
如果我必须安装骨架项目,我必须在命令行中输入 npx create-react-app my-app
。
我想知道为什么 Github 中的 Facebook 有 npx create-react-app my-app
而不是 npm create-react-app my-app
?
create-react-app
是一个生成器。 npx
进入 互联网,临时下载包以便执行它 (npx)。你得到(和想要)的是输出,它保存在本地,你运行命令的地方。
介绍 npx:一个 npm 包运行器
NPM - 管理包,但执行起来并不容易。 NPX - 用于执行 Node 包的工具。
NPX 与 NPM 版本 5.2+ 捆绑在一起
NPM
本身并不简单地运行任何包。事实上,它不运行任何包。如果要使用 NPM 运行包,则必须在 package.json
文件中指定该包。
当通过 NPM 包安装可执行文件时,NPM 链接到它们:
本地安装在 ./node_modules/.bin/ 目录中创建了“链接”。全局安装具有从 Linux 上的全局 bin/ 目录(例如 /usr/local/bin)或 Windows 上的 %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
将检查 $PATH
或本地项目二进制文件中是否存在 <command>
,并执行它。因此,对于上面的示例,如果您希望执行本地安装的软件包 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
相关问题:
如何使用本地安装在 node_modules 中的包? NPM:如何获取 ./node_modules/.bin 文件夹?如何使用 npm 脚本运行 js 文件?
npx 是一个 npm 包运行器(x 可能代表 eXecute)。使用 npx 的一种常见方法是临时下载并运行一个包或进行试用。
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。
NPM 是一个包管理器,你可以使用 NPM 安装 node.js 包
NPX 是一个执行 node.js 包的工具。
无论您是在全局还是本地安装该软件包都没有关系。 NPX 将临时安装并运行它。如果您配置 package.json 文件并将其包含在脚本部分中,NPM 也可以运行包。
所以请记住这一点,如果您想快速检查/运行节点包而不在本地或全局安装,请使用 NPX。
npM - 经理
npX - 执行 - 容易记住
npx
6.14.11 上重现,例如在 npm install --save vaca;npx vaca
中,npx 不会重新下载:stackoverflow.com/questions/49302438/…
npm - JavaScript 包管理器,就像:pip
(Python)、Maven
(Java)、NuGet
(.NET)、Composer
(PHP)、RubyGems
(红宝石),...
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
的更多信息:
https://docs.npmjs.com/files/package.json#bin
https://github.com/mishoo/UglifyJS2/blob/master/package.json#L17
NP:
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。
NPM can just install local versions
- 不正确。 npm
可以安装全局,这是一种常见的做法。
简单定义:
npm - Javascript 包管理器
npx - 执行 npm 包二进制文件
这是 NPX 的一个示例:npx cowsay hello
如果你在你的 bash 终端中输入它,你会看到结果。这样做的好处是 npx 已经临时安装了 cowsay。由于没有永久安装cowsay,因此没有包装污染。这对于您想要避免包装污染的一次性包装非常有用。
正如其他答案中提到的,npx 在需要安装(使用 npm)包然后在运行之前进行配置的情况下也非常有用。例如,不要使用 npm 安装然后配置 json.package 文件,然后调用配置的运行命令,只需使用 npx 代替。一个真实的例子:npx create-react-app my-app
NPM => 是一个 JS 包管理器。
NPX => 是一个执行 Node 包和执行 npm 包二进制文件的工具。
很容易记住:
-npm 代表经理
-npx 代表执行
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
https://i.stack.imgur.com/TXGoT.png
最简单的定义:
NPX
npx 代表 Node Package Execute,它与 npm 一起提供,当您安装 npm 以上 5.2.0 版本时,将自动安装 npx。它是一个 npm 包运行程序,可以从 npm 注册表执行您想要的任何包,甚至无需安装该包。
新PM
npm 是由 npm, Inc 维护的 JavaScript 编程语言的包管理器。npm 是 JavaScript 运行时环境 Node.js 的默认包管理器。它由一个命令行客户端(也称为 npm)和一个公共和付费私人包的在线数据库组成
简单的答案就像
NPX:用于执行任何节点包,无需在我们的机器上安装包。
NPM:用于在我们的机器上安装任何 node js 包。当我们使用 NPM 安装任何包时,我们可以使用 "require("package-name')"。但是当我们使用 NPX 时,我们不能导入包。
示例:您应该运行 npm i axios 在这种情况下,您正在本地机器上安装 axios 包
和 npx create-react-app 'app-name' 在这里你直接在你的机器上执行 create-react-app 包而不安装它的文件。
NPM 代表节点包管理器。它预装了 Node.js。 NPM 有助于将项目中的包作为依赖项进行管理。
使用 NPM 时,有两种方法可以将包安装到本地计算机。
本地:本地安装包时,安装在本地项目目录的 ./node_modules/.bin/ 中。全局:在用户环境路径中安装一个全局包。 /usr/local/bin 用于 Linux 和 AppData%/npm 用于 Windows。
要执行本地安装的包,应该在 package.json 脚本块中指定它,如下所示。
"scripts": {
"your-package": "your-package-name"
}
然后,您可以使用以下命令执行包:
npm run your-package-name
NPX 是一个 NPM 包执行器。目前,当您安装 NPM 5.2.0 或更高版本时,NPX 与 NPM 捆绑在一起。
为什么 NPX 优于 NPM?
无需使用 node_modules 路径编辑 package.json 文件。
您可以直接从命令行执行该工具。
NPM和NPX的区别如下:
i) NPM 用于安装包,而 NPX 用于执行包。
ii) 由于 npm,安装的包必须得到照顾,因为它是全局安装的,而 npx 使用的包不需要照顾,因为它们不是全局安装的。
NPX 是用于在新项目中创建和执行某些功能的工具 NPM 是包含所有库的包管理器
下面是使用 npx
创建应用程序的示例
npx create-react-app 项目名称 --template all
简单地说,npm 是节点包管理器,npx 是运行 npm 包的可执行版本
npm 是用于安装包的工具,npx 是用于执行包的工具。 npm - 如果您希望通过 npm 运行包,那么您必须在 package.json 中指定该包并在本地安装它。 npx-A 包可以在不安装包的情况下执行。它是一个 npm 包运行器,因此如果尚未安装任何包,它将自动安装它们。
另一方面,npm 是包管理器或安装程序 npx 使用的包不是全局安装的,因此您必须长期无忧无虑地污染。
实际上,我尝试了很多方法来解决这个问题,但都失败了,但最终全局删除/删除纱线解决了这个问题
只需在命令行终端中键入此命令:
npm 卸载 -g 纱线
然后运行下面的命令来安装 react starter 项目
npx 创建反应应用程序
node.js
,对吧?为什么它可以通过“npm”(节点包管理器)获得?./node_modules/.bin
添加到您的 $PATH 并且不需要 NPX。