六维教程

NPM create命令

很多开源项目的文档里都有类似这样的命令:

npm create vue@latest

你会不会好奇:这不就是建个项目吗?为什么不用 npm install

这篇文章帮你彻底搞懂 npm create 是什么、怎么用,以及它和 npm initnpx 的关系。

npm create 是什么

npm create 是 NPM 提供的一个快捷命令,专门用于执行脚手架工具来快速创建项目。

先理解“脚手架”

在讲 npm create 之前,先搞懂一个概念:脚手架(Scaffolding)

脚手架是一个自动化的项目生成工具。你回答几个问题,它就帮你生成一个完整的项目结构,省去手动建文件夹、配构建工具、写配置文件的麻烦。

比如你执行 npm create vue@latest,它会问你:

✔ Project name: » my-vue-app
✔ Add TypeScript? » YesAdd Vue Router? » YesAdd Pinia? » YesAdd ESLint? » Yes

回答完,它自动生成:

my-vue-app/
├── src/
│   ├── components/
│   ├── views/
│   ├── App.vue
│   └── main.ts
├── public/
├── index.html
├── package.json
├── tsconfig.json
└── vite.config.ts

一个能直接运行的项目就建好了。脚手架帮你把所有繁琐的初始化工作自动化了。

那 npm create 干了什么

npm create vue@latest

这条命令的本质就是:调用 create-vue 这个脚手架包来生成 Vue 项目。

它做的事情很简单:

  1. 找到 create-vue 这个脚手架包
  2. 临时下载并执行它
  3. 脚手架启动交互式询问
  4. 根据你的回答生成项目文件

完整执行流程

当你执行 npm create vue@latest,背后发生了这些事:

npm create vue@latest
    │
    ├── 1. 识别 create 命令
    │    └── 转换为 npm init vue@latest
    │
    ├── 2. npm init 调用 npx
    │    └── 实际执行 npx create-vue@latest
    │
    ├── 3. npx 查找 create-vue
    │    ├── 本地 node_modules/.bin/ 有吗? → 没有
    │    ├── 全局安装有吗? → 没有
    │    └── 都没有 → 从 npm registry 临时下载
    │
    ├── 4. 下载 create-vue@latestNPM 缓存
    │
    ├── 5. 执行 create-vue 包的入口脚本
    │
    ├── 6. 交互式询问(TypeScriptRouter?...)
    │
    └── 7. 生成项目文件 + 提示后续命令
         └── cd my-app && npm install && npm run dev

npm create、npm init、npx 的关系

这是很多人最困惑的地方。三个命令到底什么关系?

一张图看懂

npm create vue@latest
        │
        └── 是 npm init 的别名
                │
                └── 内部调用 npx
                        │
                        └── 下载并执行 create-vue

逐层拆解

1. npm create = npm init(别名关系)

npm create vue@latest
# 完全等同于
npm init vue@latest

npm createnpm init 是同一个东西的两个名字。NPM 7+ 引入 create 作为别名,因为 npm create 读起来更直观——“创建一个项目”。

2. npm init <pkg> = npx <pkg>(执行关系)

从 NPM 6 开始,npm init <pkg> 会自动通过 npx 去执行对应的包。

npm init vue@latest
# 内部执行
npx create-vue@latest

3. npx 负责下载和执行

npx 会临时下载 create-vue 包并执行,执行完后不会保留在全局。

历史演进

阶段 命令 说明
NPM 6 之前 npm init 只能生成 package.json,不能执行脚手架
NPM 6 引入 npm init <pkg> 可以通过 npx 执行脚手架包
NPM 7+ npm create 作为 npm init 的别名,语义更清晰

现在你看到 npm createnpm initnpx 三种写法,它们最终做的是同一件事。官方推荐用 npm create,语义最清晰。

npm create vs npm install

新手最容易搞混的两个命令:

命令 用途 结果
npm create vue 执行脚手架 生成项目文件夹 + 源代码文件
npm install vue 安装依赖包 node_modules 中添加 Vue 代码库

用生活中的例子来理解:

  • npm create → 去超市买一盒配好的净菜(菜 + 调料 + 菜谱都配好了)
  • npm install → 只买一种调料(加到已有的食材里)

一个创建项目骨架,一个往项目里装依赖,完全两回事。

@latest 是什么

npm create vue@latest

这里的 @latest 指定了包的版本。

写法 含义
npm create vue@latest 使用 create-vue 包的最新版本
npm create vue@3 使用 create-vue 包的 3.x 版本
npm create vue 不指定版本(等同于 @latest,但不保证)

建议始终带上 @latest,确保你使用的是最新的脚手架模板,获得最新的项目结构和特性。

常用脚手架一览

框架/工具 命令 底层包
Vue npm create vue@latest create-vue
Vite npm create vite@latest create-vite
React npm create react-app@latest create-react-app
Next.js npm create next-app@latest create-next-app
Nuxt npm create nuxt-app@latest create-nuxt-app
Express npm create express-app express-generator

规律:包名通常是 create-<工具名>,命令是 npm create <工具名>

新手常见问题

Q:npm create 会把包安装到全局吗?

不会。脚手架包是临时下载到 NPM 缓存目录的,执行完后不会保留在全局或项目里。它只是用来“生成文件”的工具,用完即走。

Q:npm createnpx 用哪个?

两者最终效果相同。npm create 语义更清晰(创建项目),npx 更通用(执行任意包)。官方文档现在普遍推荐 npm create

# 这两条命令做的是同一件事
npm create vue@latest
npx create-vue@latest

Q:提示“command not found”怎么办?

npm create 需要 NPM 6.0+。运行 npm -v 检查版本,如果过低,升级 Node.js(NPM 会一起升级)。

Q:为什么有的脚手架文档用 npx,有的用 npm create

历史原因。老的文档可能用 npx,新文档普遍改用 npm create。功能一样,不用纠结。

Q:npm create 只能创建前端项目吗?

不是,只要有对应的脚手架包就行。比如 npm create express-app 创建 Express 后端项目。

本篇小结

  • npm create 是创建项目的快捷命令,本质是调用脚手架包生成项目文件
  • npm create = npm init,内部通过 npx 执行
  • @latest 确保使用最新版脚手架模板
  • npm install 完全不同:一个创建项目,一个安装依赖
  • 常见用法npm create vue@latestnpm create vite@latest

现在再看到 npm create vue@latest,你应该清楚它背后的原理了——它不是在安装什么包,而是在帮你“搭建”一个完整的项目。

上一篇
NPM 全局包与NPX命令
下一篇
NPM 依赖维护