首页 > 解决方案 > npx 和 npm 的区别?

问题描述

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

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

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

标签: javascriptreactjsnpmnpx

解决方案


介绍 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 文件?

推荐阅读