彻底搞清楚 npm、npx、yarn 的区别,只要记住下面两条:

  • npm 只负责安装 package,不负责执行,yarn 也是,但是比 npm 好用。
  • npx 不负责安装,只负责执行 package。

 

首先举个例子。

npm 安装某个 package 的命令如下:

npm install some-package

​install​​​ 后面如果没有跟 ​​-g​​ 的话只能将依赖包安装在当前目录下,如同上面这条命令。

也就是说 some-package 的路径无法在环境变量 $PATH 中体现,因此也就无法在终端直接被执行。

按照“传统工艺”,如果硬要执行 some-package,只能把路径拼完整了才可以。

$ ./node_modules/.bin/some-package

但是这么做显然非常麻烦,手速跟不上思维,影响生产效率。

所以,“一般做法”是借助 npm 稍作简化,在 package.json 的 scripts 中增加一条:

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

然后像下面这样执行:

npm run some-package

如此一来可以不用拼路径,但是修改 package.json 本身也是一件麻烦事。

于是 npx 闪亮登场。

有了它,npm install 之后的 package 只需要一行命令就可以执行,再也不需要拼路径,也无需修改 package.json 文件了。

npx some-package

简单总结一下:

  • npm 是 Package Manager,负责管理包
  • npx 是 Package eXecutor,负责执行包

 

那 yarn 又是什么鬼呢?

很简单,yarn 是一个用于取代 npm 的包管理工具,它的优势在于:

  • 版本稳定(借助 yarn.lock,类似 cocoapods 的 Podfile.lock)
  • 多线程下载 

总之记住一句话:yarn 比 npm 好用

 

参考资料: