Javascript npx和npm之间的区别?

Javascript npx和npm之间的区别?,javascript,npm,npx,Javascript,Npm,Npx,我刚刚开始学习React,Facebook通过提供 如果我必须安装框架项目,我必须在命令行中键入npx create react app my app 我想知道为什么Github中的Facebook有npx create react app my app而不是npm create react app my app?npx是npm包运行程序(x可能代表eXecute)。典型的用途是临时下载并运行一个包或进行试用 create react app是一个npm包,预计在项目生命周期中只运行一次。因此,

我刚刚开始学习React,Facebook通过提供

如果我必须安装框架项目,我必须在命令行中键入
npx create react app my app

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

npx是npm包运行程序(x可能代表eXecute)。典型的用途是临时下载并运行一个包或进行试用

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

如主页中所述,默认情况下,npx可以在路径中或从node_modules/.bin运行命令

注意: 通过一些挖掘,我们可以发现create-react-app指向在节点环境中执行的Javascript文件(在Linux系统上可能指向/usr/lib/node_modules/create-react-app/index.js)。这只是一个进行一些检查的全局工具。实际的设置是由react脚本完成的,其最新版本安装在项目中。有关更多信息,请参阅。

NPX:

发件人:

Web开发人员可以在他们的开发中有几十个项目 并且每个项目都安装了自己的特定npm集 依赖关系。几年前,处理CLI的常见建议 Grunt或Gulp等应用程序需要在每个应用程序中本地安装它们 项目,也可以全局执行,以便可以轻松地从命令运行它们 线路

但在全球范围内安装会带来与解决问题一样多的问题。项目 可能取决于命令行工具的不同版本,以及 具有大量特定于开发的CLI工具的操作系统不是 也很好。如今,大多数开发人员更喜欢在本地安装工具 就这样吧

本地版本的工具允许开发人员从GitHub中提取项目 无需担心与全球安装的 工具的版本。NPM只需安装本地版本,您就可以了 外带。但特定于项目的安装并非没有它们的功能 问题:您如何在没有任何问题的情况下运行正确版本的工具 指定其在项目中的确切位置或使用 别名

这就是npx解决的问题。NPM 5.2中包含的新工具npx是 一个小的实用程序,它足够聪明,可以在需要时运行正确的应用程序 它是从项目内部调用的

例如,如果您想运行项目本地版本的mocha, 您可以在项目内部运行npx mocha,它会做您想做的事情 期待

npx的一个有用的副作用是它将自动安装npm 尚未安装的软件包。因此,作为该工具的创建者Kat Marchán指出,你可以经营npx benny hill而无需交易 本尼·希尔污染了全球环境

如果你想使用npx,更新到最新版本 新产品管理公司

NPM
-管理包,但执行任何包都不容易。
NPX
-执行节点包的工具。
NPX
NPM
版本
5.2+

NPM本身并不简单地运行任何包。事实上,它不运行任何包。如果要使用NPM运行包,必须在
package.json
文件中指定该包

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

  • 本地安装在
    /node\u modules/.bin/
    目录下创建了“链接”
  • 全局安装具有从Linux上的全局
    bin/
    目录(例如
    /usr/local/bin
    )或Windows上的
    %AppData%/npm
    创建的“链接”

  • 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
    )运行脚本:


    净现值:
    npx
    将检查
    是否存在于
    $PATH
    或本地项目二进制文件中,并执行它。因此,对于上面的示例,如果您希望执行本地安装的包
    some-package
    ,则只需键入:

    npx some-package
    
    npx的另一个主要优点是能够执行以前未安装的包:

    $ npx create-react-app my-app
    
    上面的示例将在命令运行的路径内生成一个
    react
    app样板文件,并确保您始终使用生成器或构建工具的最新版本,而无需每次使用它时进行升级


    用例示例:
    npx
    命令可能对
    package.json
    文件的
    script
    部分有所帮助, 当不需要定义可能不常用的依赖项或任何其他原因时:

    “脚本”:{
    “开始”:“npxgulp@3.9.1",
    “服务”:“npx http服务器”
    }
    
    呼叫:
    npm运行服务


    相关问题:

  • 这里有一个NPX的例子:NPX cowsay hello

    如果将其输入bash终端,您将看到结果。这样做的好处是npx临时安装了cowsay。因为cowsay不是永久安装的,所以没有包装污染。这是伟大的一次性包装w
    $ npx create-react-app my-app
    
    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