npm vs npx

176 阅读2分钟

npm是安装 Node.js 时开箱即用的包管理器。它为开发人员提供了一种在全局和本地安装包的方法。 有时您可能想查看一个特定的包并尝试一些命令。但是,如果不在本地 node_modules 文件夹中安装依赖项,您就无法做到这一点。

这就是 npx 的用武之地。

在本文中,我们将了解 npm 和 npx 之间的区别,并了解如何充分利用两者。 首先,让我们了解 npm 是什么以及我们可以用它做什么。

npm

首先,它是一个用于发布开源 javascript 项目的在线存储库。

其次,它是一个 CLI 工具,可帮助您安装这些包并管理它们的版本和依赖项。 npm 上有数十万个 库和应用程序,并且每天都在增加。

npm 本身不运行任何包。如果你想使用 npm 运行一个包,你必须在你的 package.json 文件中指定那个包。

当通过 npm 包安装可执行文件时,npm 会创建指向它们的链接:

  • 本地安装在 ./node_modules/.bin/ 目录中创建了链接
  • 全局安装具有从全局 bin/ 目录创建的链接(例如:Linux 上的 /usr/local/bin 或 Windows 上的 %AppData%/npm) 要使用 npm 执行包,您必须键入本地路径,如下所示:
$ ./node_modules/.bin/some-package

或者您可以通过将其添加到脚本部分的 package.json 文件中来运行本地安装的包,如下所示:

{
  "name": "some-application",
  "version": "1.0.0",
  "scripts": {
    "foo": "some-package"
  }
}

然后你可以使用 npm run 运行脚本:

npm run foo

你可以看到用普通的 npm 运行一个包需要相当多的步骤。

幸运的是,这就是 npx 派上用场的地方。

npx

由于 npm 版本 5.2.0 npx 预先与 npm 捆绑在一起。 npx 也是一个 CLI 工具,其目的是使安装和管理托管在 npm 注册表中的依赖项变得容易。

现在很容易运行 npm 安装包 您可以运行以下命令来查看是否安装了npx

$ which npx

如果没有安装,您可以像这样安装它:

$ npm install -g npx

已经安装完,让我们看看怎么使 npx:

行本地安装的包

如果你想执行一个本地安装的包,你需要做的就是输入:

$ npx -package

npx 将检查 $PATH 或本地项目二进制文件中是否存在 <command><package>,如果存在,它将执行它。

执行未安装的包

另一个主要用途是能够执行未安装的包。 让我们通过运行来测试一下:

$ npx cowsay wow	

因为有时您只想使用一些 CLI 工具,但又不想为了测试它们而全局安装它们。

这意味着您可以节省一些磁盘空间并仅在需要时运行它们。这也意味着您的全局变量将受到更少的污染。

直接从 GitHub 运行代码

您可以使用 npx 运行任何 ### github repository

npx github:piuccio/cowsay

测试不同的包版本

npx 使得测试包或模块的不同版本变得非常容易。为了测试这个功能,我们将在本地安装 create-react-app 包并测试即将推出的版本。

$ npm v create-react-app

截屏2022-03-20 下午3.54.36.png 让我们使用 npx 来尝试 create-react-app 的下一个版本

npx create-react-app@next my-projet

npx 将临时安装下一个版本的 create-react-app,然后它会执行脚手架应用程序并安装其依赖项。 安装后可以体验下一个版本的 create-react-app 包上运行的应用程序

总结

npx 帮助我们避免版本控制、依赖问题和安装我们只想尝试的不必要的包。

它还提供了一种清晰而简单的方式来执行包。

如果您之前没有使用过 npx,那么现在是入手的好时机!

参考:

npx