我刚开始学习React,facebook通过提供以下现成项目帮助简化初始设置
链接到Github上的Facebook帐户:https://github.com/facebook/create-react-app
如果我必须安装骨架项目,我必须在命令行中键入npx create-react-app my-app
我想知道为什么Github中的facebook帐户有npx create-react-app my-app
而不是npm create-react-app my-app
?
答案 0 :(得分:239)
NPM
-管理程序包,但是并没有使执行 execute 变得容易。
NPX
与NPX
版本NPM
捆绑在一起
5.2+
本身并不能简单地运行任何软件包。事实上,它不会运行任何程序包。如果要使用NPM运行软件包,则必须在NPM
文件中指定该软件包。
通过NPM软件包安装可执行文件时,NPM链接到它们:
packages.json
目录中创建了“链接”。./node_modules/.bin/
目录(例如bin/
)或Windows上的/usr/local/bin
创建的“链接”。一个人可能会在某个项目的本地安装软件包:
%AppData%/npm
现在假设您希望NodeJS从命令行执行该程序包:
npm install some-package
以上内容将失败。只能通过输入仅的名称来执行全局安装的程序包。
要解决此问题并使其运行,必须输入本地路径:
$ some-package
您可以通过编辑$ ./node_modules/.bin/some-package
文件并将其添加到packages.json
部分中来技术上运行本地安装的软件包:
scripts
然后使用npm run-script
(或{
"name": "whatever",
"version": "1.0.0",
"scripts": {
"some-package": "some-package"
}
}
)运行脚本:
npm run
npm run some-package
将检查npx
或本地项目二进制文件中是否存在<command>
,并执行它。因此,对于上面的示例,如果您想执行本地安装的软件包$PATH
,只需输入:
some-package
npx some-package
的另一个主要优势是能够执行以前未安装的软件包:
npx
上面的示例将在命令运行的路径内 中生成$ npx create-react-app my-app
应用样板,并确保您始终使用最新版本的生成器或构建工具,而不必每次使用时都要升级。
答案 1 :(得分:37)
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。
答案 2 :(得分:33)
NPX:
Web开发人员可以在其开发中拥有数十个项目 机器,并且每个项目都有自己特定的npm安装集 依赖性。几年前,有关CLI的通常建议 诸如Grunt或Gulp之类的应用程序是将它们分别安装在本地 项目以及全球范围内,以便可以从命令轻松运行它们 线。
但是在全球范围内安装会导致解决的问题。专案 可能取决于命令行工具的不同版本,并且污染 具有许多特定于开发的CLI工具的操作系统不是 太好了。如今,大多数开发人员更喜欢在本地安装工具 并留在那里。
工具的本地版本允许开发人员从GitHub提取项目 不用担心与全局安装不兼容 版本的工具。 NPM只能安装本地版本, 去。但是,针对特定项目的安装并非没有 问题:如何在没有工具的情况下运行正确版本的工具 指定其在项目中的确切位置或在其中玩耍 别名?
这就是npx解决的问题。 NPM 5.2中包含的新工具npx是 一个小工具,足够聪明,可以在运行时运行正确的应用程序 是从项目内部调用的。
例如,如果您要运行摩卡项目的本地版本, 您可以在项目内运行npx mocha,它将执行您的操作 期待。
npx的一个有用的附带好处是它将自动安装npm 尚未安装的软件包。因此,作为工具的创建者Kat Marchán指出,您无需处理即可运行npx benny-hill 本尼·希尔(Benny Hill)污染了全球环境。
如果要旋转npx,请更新到最新版本 的npm。
答案 3 :(得分:24)
npx
在不显式安装的情况下运行软件包的命令。
用例:
语法:
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
的更多信息:
答案 4 :(得分:11)
简单定义:
npm -Javascript程序包管理器
npx -执行npm软件包二进制文件
答案 5 :(得分:4)
NPM是一个程序包管理器,您可以使用NPM安装node.js程序包
NPX是执行node.js软件包的工具。
无论是全局安装还是本地安装该软件包都没有关系。 NPX将临时安装并运行它。如果您配置package.json文件并将其包含在脚本部分中,则NPM也可以运行软件包。
请记住这一点,如果您想快速检查/运行节点程序包而无需在本地或全局安装NPX。
答案 6 :(得分:3)
以下是NPX的示例:npx cowsay你好
如果将其输入到bash终端中,您将看到结果。这样做的好处是npx已临时安装了Cowsay。由于Cowsay未永久安装,因此没有包装污染。这非常适合想要避免包装污染的一次性包装。
如其他答案中所述,在需要使用npm安装软件包并在运行之前对其进行配置的情况下,npx也非常有用。例如。而不是使用npm来安装然后配置json.package文件,然后调用已配置的run命令,而只需使用npx即可。一个真实的例子: npx create-react-app my-app
答案 7 :(得分:1)
最简单的定义:
NPX
<块引用>npx 代表 Node Package Execute,它与 npm 一起提供, 当您安装 5.2.0 以上版本的 npm 时,npx 会自动 安装。它是一个 npm 包运行器,可以执行任何包 您想要从 npm 注册表中获取,甚至无需安装 包。
NPM
<块引用>npm 是 JavaScript 编程语言的包管理器 由 npm, Inc. 维护。 npm 是默认的包管理器 JavaScript 运行时环境 Node.js。它由一个命令行组成 客户端,也称为 npm,以及公共和付费的在线数据库 私人包
答案 8 :(得分:0)
以下是使用 npx
npx create-react-app project-name --template all
答案 9 :(得分:0)
实际上,我尝试了很多方法来解决这个问题,但都失败了,但最终移除/删除 纱线全局 解决了问题强>
只需在命令行终端中输入此命令:
<块引用>npm uninstall -g yarn
然后运行下面的命令来安装react starter项目
<块引用>npx create-react-app
答案 10 :(得分:-1)
如果使用 npm 5.1或更早版本,则不能使用npx。相反,请全局安装create-react-app:
npm install -g create-react-app
现在您可以运行:
create-react-app my-app