5 分钟了解 npx、yarn、npm create

520 阅读1分钟

Hi, 我是 Lem, 最近在被标题的几个命令给搞疑惑了,都是 nodejs 的包管理工具,各自都是干嘛用的?

前言

作为一名前端开发者来说,npm 和 yarn 都不陌生,它们除了可以下载和管理依赖包外,还能和 npx 一样可以快速初始化项目,那就使用到了 create 命令。

以 create-react-app 为例

我们有三种创建应用程序的方式:

  • npx create-react-app my-app
  • npm create react-app my-app
  • yarn create react-app my-app

什么是npx

NPX (Node Package Executor),是包的执行器。

使用方式:

  1. 以简短的方式执行本地模块:如果要执行项目依赖包的执行文件,则需要键入以下内容:$ ./node_modules/.bin/jest; 但使用 npx 命令就简洁很多: $ npx jest

  2. 一次性执行全局模块:有些全局包括: create-react-app 使用频率低,在需要时可以用 $ npx create-react-app my-react-app,这样就不需要全局安装 create-react-app,还可以保证每次均使用最新版本。

npm、yarn create

npm、yarn create 使用方式:

  • npm create <starter-kit-package> [<args>]
  • yarn create <starter-kit-package> [<args>]

命令底层做了两件事情:

  1. 全局安装 starter-kit-package 包,若本地已经存在尝试更新到最新版本
  2. 执行包的可执行文件

yarn create react-app my-app 为例,同下面的命令等价

$ yarn global add create-react-app
$ create-react-app my-app

其实就是使用 create-<starter-kit-package> 包的快捷方式。

npm init

也是用 create-* 包的快捷方式,来创建项目。和 npm create 的作用一样; 但其实,npm initnpm create 更常见,官方文档更多的是使用 npm init 命令,而 npm create 则没那么多人关注,因为 npm createnpm init 的别名而已,可以在 npm cli CHANGELOG 发现到:

image.png github.com/npm/cli/blo…

总结

npm createnpm inityarn create都是利用包名的规则,create-*, 先全局下载到本地再执行 npx xxx 则没有包名的约束,临时下载执行后删除,均使用最新包版本;

更推荐 npx xxx 这种更实用方式,而且不用关注这么多 create 和 init 命令了

公众号链接:web5分钟