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
让我们使用 npx 来尝试 create-react-app 的下一个版本
npx create-react-app@next my-projet
npx 将临时安装下一个版本的 create-react-app,然后它会执行脚手架应用程序并安装其依赖项。
安装后可以体验下一个版本的 create-react-app 包上运行的应用程序
总结
npx 帮助我们避免版本控制、依赖问题和安装我们只想尝试的不必要的包。
它还提供了一种清晰而简单的方式来执行包。
如果您之前没有使用过 npx,那么现在是入手的好时机!
参考: