npx 和 npm 之间的区别?

Difference between npx and npm?

我刚刚开始学习 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

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

create-react-app 是一个 npm 包,预计在项目的生命周期中只 运行 一次.因此,最好使用 npx 安装并 运行 一步完成。

如主页https://www.npmjs.com/package/npx中所述,npx可以在PATH或node_modules/.bin中默认使用运行命令.

注: 通过一些挖掘,我们可以发现 create-react-app 指向在节点环境中执行的 Javascript 文件(可能指向 /usr/lib/node_modules/create-react-app/index.js on Linux 系统)。这只是一个进行一些检查的全局工具。实际设置由 react-scripts 完成,其最新版本已安装在项目中。有关详细信息,请参阅 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 developers can have dozens of projects on their development machines, and each project has its own particular set of npm-installed dependencies. A few years back, the usual advice for dealing with CLI applications like Grunt or Gulp was to install them locally in each project and also globally so they could easily be run from the command line.

But installing globally caused as many problems as it solved. Projects may depend on different versions of command line tools, and polluting the operating system with lots of development-specific CLI tools isn’t great either. Today, most developers prefer to install tools locally and leave it at that.

Local versions of tools allow developers to pull projects from GitHub without worrying about incompatibilities with globally installed versions of tools. NPM can just install local versions and you’re good to go. But project specific installations aren’t without their problems: how do you run the right version of the tool without specifying its exact location in the project or playing around with aliases?

That’s the problem npx solves. A new tool included in NPM 5.2, npx is a small utility that’s smart enough to run the right application when it’s called from within a project.

If you wanted to run the project-local version of mocha, for example, you can run npx mocha inside the project and it will do what you expect.

A useful side benefit of npx is that it will automatically install npm packages that aren’t already installed. So, as the tool’s creator Kat Marchán points out, you can run npx benny-hill without having to deal with Benny Hill polluting the global environment.

If you want to take npx for a spin, update to the most recent version of npm.

Introducing npx: an npm package runner

NPM - 管理但是 并不容易执行 any.
NPX - 执行 节点包的工具。

NPX comes bundled with NPM version 5.2+

NPM 本身并不只是 运行 任何包。事实上,它 运行 没有任何包裹。如果您想 运行 使用 NPM 的包,您必须在 package.json 文件中指定该包。

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

  1. local 安装在 ./node_modules/.bin/ 目录中创建了“链接”。
  2. 全局 安装具有从 Linux 或 [=28] 上的全局 bin/ 目录(例如 /usr/local/bin)创建的“链接” =] 在 Windows.

Documentation you should read


NPM:

一个人可能会在某个项目上本地安装一个包:

npm install some-package

现在假设您希望 NodeJS 从命令行执行该包:

$ some-package

以上将失败。只有 全局安装的 包可以通过输入它们的名称来执行 only.

要修复此问题并获得它 运行,您必须键入本地路径:

$ ./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. How to use package installed locally in node_modules?
  2. NPM: how to source ./node_modules/.bin folder?

下面是 NPX 的一个例子:npx cowsay hello

如果您将其输入 bash 终端,您将看到结果。这样做的好处是npx临时安装了cowsay。没有包污染,因为 cowsay 不是永久安装的。这对于您想避免包装污染的一次性包装非常有用。

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

npm - Java脚本的包管理器,就像: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-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的更多信息:

NPM 是一个包管理器,您可以使用 NPM

安装 node.js 个包

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

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

So remember this, if you want to check/run a node package quickly without installing locally or globally use NPX.

npM - 经理

npX - 执行 - 容易记忆

简单定义:

npm - Javascript 包管理器

npx - 执行 npm 包二进制文件

下面是使用 npx

创建应用程序的示例

npx create-react-app project-name --template all

实际上,我尝试了很多方法来解决这个问题,但都失败了,但最终 removing/deleting yarn 全局问题解决

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

npm uninstall -g yarn

然后运行下面的命令来安装react starter项目

npx create-react-app

最简单的定义:

NPX

The npx stands for Node Package Execute and it comes with the npm, when you installed npm above 5.2.0 version then automatically npx will installed. It is an npm package runner that can execute any package that you want from the npm registry without even installing that package.

NPM

npm is a package manager for the JavaScript programming language maintained by npm, Inc. npm is the default package manager for the JavaScript runtime environment Node.js. It consists of a command line client, also called npm, and an online database of public and paid-for private packages

NPM:NPM 代表节点包管理器,是 Node.js 的默认包管理器。它由 Isaac Z. Schlueter 开发,最初于 2010 年 1 月 12 日发布。它完全用 JavaScript 编写。它由管理所有 node.js 包和模块的命令行客户端 npm 组成。 node.js安装时,包含在安装中。

npm run your-package-name

NPX是一个用来执行包的工具。

NPX是Node Package Execute的首字母缩写,NPX包是npm自带的,所以5.2.0以上安装npm时,会自动安装NPX。

它是一个 npm 包 运行ner,它可以从 npm 注册表中执行您想要的任何包,甚至无需安装该包。 npx 在一次性使用包中很有用。如果你在 5.2.0 以下安装了 npm,那么你的系统中没有安装 npx。

运行以下命令判断是否安装了npx:

npx -v

如果没有安装npx,下面的命令可以运行

npm install -g npx

使用npx执行包:

npx your-package-name

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

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

很容易记住:

-npm代表M阿纳格

-npx代表EXECUTE

简单的回答就好

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

NPM:用于在我们的机器上安装任何节点js包。当我们使用 NPM 安装任何包时,我们可以使用“require(package-name')”。但我们无法导入包当我们使用 NPX 时。

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

和 npx create-react-app 'app-name' 这里你直接在你的机器上执行 create-react-app 包而不安装它的文件。

npm 是包管理器或安装程序,npx 使用的包不是全局安装的,因此您必须长期无忧无虑。

npm 就是节点包管理器, npx 是 运行 npm packages

的可执行版本

npm 是用来安装包的工具,npx 是用来执行包的工具。 npm-If 您希望通过 npm 运行 打包,然后您必须在 package.json 中指定该包并在本地安装。 npx-A 无需安装包即可执行包。它是一个 npm 包 运行ner 所以如果任何包还没有安装它会自动安装它们。

NPM 代表 Node 包管理器。 它带有 pre-installed 和 Node.js。 NPM 有助于将项目中的包作为依赖项进行管理。

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

  1. Locally:当一个包安装在本地时,它被安装在 ./node_modules/.bin/ 本地工程目录.

  2. Globally: 在用户环境安装一个全局包 小路。 /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 是包含所有库的包管理器