如果您曾经使用过Node.js,那么一定要使用npm。

npm(node package manager)是在安装Node.js时即可使用的依赖项。它为开发人员提供了一种在全局和局部安装packages的方法。

有时,您可能希望查看特定的package并尝试一些命令。但是,如果不在局部node_modules文件夹中安装依赖项,就无法做到这一点。

npm

npm本身不会运行任何程序包。如果要使用npm运行package,则必须在package.json文件中指定该package。

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

  • local安装会在./node_modules/.bin/目录中创建link
  • global安装具有从全局bin/目录创建的链接(例如:Linux上为/usr/local/bin或Windows上为%AppData%/npm

要使用npm执行package,您必须输入局部路径,如下所示:

./node_modules/.bin/your-package

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

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

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

npm run your-package

您会看到,使用npm运行package需要花费很多时间。

幸运的是,npx诞生了。

npx

npm 5.2.0版本开始,npx与npm预先捆绑在一起。

npx还是一个CLI工具,其目的是简化安装和管理npm注册表中托管的依赖项。现在,运行通常通过npm安装的任何基于Node.js的可执行文件都非常容易。您可以运行以下命令,以查看当前npm版本是否已安装该命令:

which npx

如果没有安装npx,则可以这样安装:

npm install -g npx

确定安装好之后,让我们看一些使npx变得非常有用的用例。

运行局部安装的package

如果要执行局部安装的package,只需输入:

npx your-package

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

执行以前未安装的package

另一个主要优点是能够执行以前未安装的程序包。

有时,您只想使用某些CLI工具,但不想只是为了进行测试而全局安装它们。

这意味着您可以节省一些磁盘空间,仅在需要它们时才运行它们。这也意味着您的全局变量将减少污染。例如:

npx create-react-app my-app

直接从GitHub运行代码

您可以使用npx运行任何GitHub gists和repositories。让我们集中精力执行GitHub gists,因为它更容易创建。

最基本的脚本由主JS文件和package.json组成。设置完文件后,您所要做的就是运行带有该gists链接的npx。例如:

npx https://gist.github.com/Tynael/0861d31ea17796c9a5b4a0162eb3c1e8

测试不同的package版本

npx使测试Node.js包或模块的不同版本变得异常容易。为了测试该功能,我们将在局部安装create-react-apppackage并测试即将发布的版本。这将在输出末尾附近列出一些dist标签。 Dist标签为版本号提供别名,这使得键入变得非常容易。

npm v create-react-app

npm v

让我们使用npx尝试create-react-appnext dist标签,该标签将在sandbox目录中创建该应用。

npx create-react-app@next sandbox

npx会临时安装next版本的create-react-app,然后执行以搭建该应用并安装其依赖项。

安装后,我们可以像这样导航到该应用程序:

cd sandbox

然后使用以下命令启动它:

npm start

现在,我们有了一个可以在next版本的create-react-apppackage上运行的应用程序!

npm vs npx — What’s the Difference?

npx