npm init(yarn create) 后发生了什么

在 Vue.js 最新的文档中,通过脚手架 Vite 初始化项目,给出了一个这样的命令:

1
2
3
4
npm init vite hello-vue3 -- --template vue

或 yarn create vite hello-vue3 --template vue

之前的一些 CLI 的使用方式是先去全局安装一个 npm 包,然后该 npm 包会被全局注册,使用全局指令去完成一些动作。

直接使用 npm init 或者 yarn create 发生了什么?

一、 npm init

在最新的 npm 6.x 版本中,有着如下的行为:

1
2
3
4
5
6
7
8
9
10
11

npm init [--force|-f|--yes|-y|--scope]
npm init <@scope> (same as `npx <@scope>/create`)
npm init [<@scope>/]<name> (same as `npx [<@scope>/]create-<name>`)

eg:

npm init foo -> npx create-foo
npm init @usr/foo -> npx @usr/create-foo
npm init @usr -> npx @usr/create

即如果 npm init 后面如果跟随参数,会按照上述规则,和使用 npx 指令的行为一致,如果已经安装了该包,直接执行对应的 create-* xxx 命令。否则先拉取安装,再执行。

如果没有跟随参数,就是我们经常使用的问询式方式,生成一个 package.json 文件。

二、yarn create

在 yarn 1.x 版本中是这样的行为:

1
yarn create <starter-kit-package> [<args>]

yarn 有专门的 create 命令 yarn create,行为和 npm init 一致,即会自动添加 create 前缀,拉取并安装该包,执行后续命令。

eg:

1
2
3
4
5
6
yarn create react-app my-app

# is equal to

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

yarn 额外提供了 init 命令 yarn init 去问询式生成 package.json 文件。

参考链接

  1. yarn 官方文档 - yarn create
  2. npm 官方文档 - npm init

npm init(yarn create) 后发生了什么

https://monster1935.cn/blog/2022/02/16/npm-and-yarn-create/

作者

monster1935

发布于

2022-02-16

更新于

2025-01-02

许可协议