我刚开始学习 React,Facebook 通过提供以下现成的项目来帮助简化初始设置。
如果我必须安装骨架项目,我必须npx create-react-app my-app
在命令行中输入。
我想知道为什么 Github 中的 Facebook 有npx create-react-app my-app
而不是npm create-react-app my-app
?
我刚开始学习 React,Facebook 通过提供以下现成的项目来帮助简化初始设置。
如果我必须安装骨架项目,我必须npx create-react-app my-app
在命令行中输入。
我想知道为什么 Github 中的 Facebook 有npx create-react-app my-app
而不是npm create-react-app my-app
?
NPM
-管理包,但不会让执行任何包变得容易。NPX
- 用于执行Node 包的工具。
NPX
与NPM
版本捆绑5.2+
NPM
本身并不简单地运行任何包。事实上,它不运行任何包。如果要使用 NPM 运行包,则必须在package.json
文件中指定该包。
当通过 NPM 包安装可执行文件时,NPM 会链接到它们:
./node_modules/.bin/
目录中创建了“链接” 。bin/
目录(例如/usr/local/bin
)创建的“链接” %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
将检查是否<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
npx是一个 npm 包运行程序(x 可能代表 eXecute)。典型用途是临时下载和运行包或用于试用。
create-react-app是一个 npm 包,预计在项目的生命周期中只运行一次。因此,最好使用 npx 一步安装和运行它。
在主页提到https://www.npmjs.com/package/npx,NPX可以运行路径或从node_modules / .bin文件默认情况下的命令。
注意: 通过一些挖掘,我们可以发现 create-react-app 指向一个在 node 环境中执行的 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。
np M - 经理
np X - 执行 - 好记
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
:
NPX:
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。