npm create 是如何创建一个项目模板的?
为什么使用
npm create vite能够初始化一个 Vite 项目?这条命令的背后究竟做了什么?
今天,我们就来探讨一下npm crate是如何初始化一个项目的?
create 背后的原理
create其实就是init的别名,我们可以使用npm init -h查看:

同时也可以注意到:

npm init一个包名,实际上就是在包名前面拼接上了create-,然后再使用npx create-包名进行执行;如果名称以@开头,则会在后面拼接/create。
👉 所以:
npm create vite=npx create-vite。npm create @xxx=npx @xxx/create
npx大家都很熟悉,它就是去 npm 仓库临时下载一个库并运行它。
也就是说:要想使用
npm create vite来初始化一个项目,就必须先在 npm 仓库中发布一个create-vite库。
真正提供“初始化项目”能力的:其实是create-vite库,与npm无关!
简单验证一下
首先,我们去 npm 仓库搜一下,是否真的存在一个create-vite这样的库?

能找到,确实是有的!
然后,全局安装这个库,并在本地运行:
bash
# 全局安装
npm i create-vite -g
# 运行
create-vite最后运行效果,与使用npm create vite是完全一样的。

其他支持 create 的包
因此,很多新兴框架为了降低用户的使用门槛,通常都会发布自己的create-xxx包。
比如:
npm create vuenpm create next-appnpm create rsbuildnpm create expo-appnpm create tauri-app
为了确保使用的包是最新的版本,通常都会在包名后面加上
@latest,比如npm create vite@latest。
除了npm,常用的包管理工具yarn、pnpm、bun也都支持create指令,它们的用法也基本相同。不过bun的功能相对更强一些,它不仅支持 npm 仓库,还支持从 Github 仓库和本地模板初始化项目。
小结
总结下来,我们只需知道这几点:
npm create vite等效于npx create-vite- 它会自动在
vite前面拼接create- - 真正提供“初始化项目”能力的是
create-vite库,而不是npm