一、总览
Vite(法语意为 “快速的”,发音 /vit/,发音同 “veet”)是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:
- 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。
- 一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。
Vite 是一种具有明确建议的工具,具备合理的默认设置。您可以在 功能指南 中了解 Vite 的各种可能性。通过 插件,Vite 支持与其他框架或工具的集成。如有需要,您可以通过 配置部分 自定义适应你的项目。
Vite 还提供了强大的扩展性,可通过其 插件 API 和 JavaScript API 进行扩展,并提供完整的类型支持。
你可以在 为什么选 Vite 部分深入了解该项目的设计理念。
二、浏览器支持
在开发阶段,Vite 将 esnext 作为转换目标,因为我们假设使用的是现代浏览器,它支持所有最新的 JavaScript 和 CSS 特性。这样可以防止语法降级,让 Vite 尽可能地接近原始源代码。
对于生产构建,默认情况下 Vite 的目标浏览器支持 原生 ES 模块、原生 ESM 动态导入 和 import.meta。旧版浏览器可以通过官方的 @vitejs/plugin-legacy。查看 构建生产环境 了解更多细节。
三、在线试用 Vite
可以通过 StackBlitz 在线试用 vite。它直接在浏览器中运行基于 Vite 的构建,因此它与本地开发几乎无差别,同时无需在你的机器上安装任何东西。你可以浏览 vite.new/{template} 来选择你要使用的框架。
目前支持的模板预设如下:
JavaScript | TypeScript |
---|---|
vanilla | vanilla-ts |
vue | vue-ts |
react | react-ts |
preact | preact-ts |
lit | lit-ts |
svelte | svelte-ts |
solid | solid-ts |
qwik | qwik-ts |
四、搭建第一个 Vite 项目
兼容性注意
Vite 需要 Node.js 版本 18+ 或 20+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。
不同方式安装指令
- npm方式:
npm create vite@latest- Yarn方式:
yarn create vite- PNPM方式:
pnpm create vite- Bun
bun create vite
然后按照提示操作即可!
你还可以通过附加的命令行选项直接指定项目名称和你想要使用的模板。例如,要构建一个 Vite + Vue 项目,运行:
# npm 7+,需要添加额外的 --:
npm create vite@latest my-vue-app -- --template vue
查看 create-vite 以获取每个模板的更多细节:vanilla,vanilla-ts, vue, vue-ts,react,react-ts,react-swc,react-swc-ts,preact,preact-ts,lit,lit-ts,svelte,svelte-ts,solid,solid-ts,qwik,qwik-ts。
你可以使用 . 作为项目名称,在当前目录中创建项目脚手架。
4.1 示例演示
步骤:
- 在桌面里创建好 vs_project 文件夹
- 在终端窗口里切换到 vs_project 目录
- 终端窗口里输入命令:
npm create vite@latest LearnViteVueApp – --template vue- 输入Y ,按回车键
- 等出现终端窗口里显示LearnViteVueApp时,按回车键
最后看到终点窗口里显示Done Now run:
- cd LearnViteVueApp
- npm install
- npm run dev
表示项目创建好了
4.2 LearnViteVueApp项目结构
4.3 启动LearnViteVueApp项目
在浏览器里访问http://localhost:5173/index.html
五、社区模板
create-vite 是一个快速生成主流框架基础模板的工具。查看 Awesome Vite 仓库的 社区维护模板,里面包含各种工具和不同框架的模板。
对于一个 https://github.com/user/project 中的模板,可以尝试使用 https://github.stackblitz.com/user/project(即在项目 URL 的 github 后添加 .stackblitz)。
你也可以用如 degit 之类的工具,使用社区模版来搭建项目。假设项目在 GitHub 上并使用 main 作为默认分支,可以使用以下命令创建本地副本:
npx degit user/project#main my-project
cd my-project
npm install
npm run dev
六、手动安装
在你的项目中,可以用以下方法来安装 vite 命令行工具:
- npm
npm install -D vite- Yarn
yarn add -D vite- PNPM
pnpm add -D vite- Bun
bun add -D vite
并创建一个像这样的 index.html 文件:
<p>Hello Vite!</p>
然后在终端中运行 vite:
vite
就可以在 http://localhost:5173 上访问 index.html。
七、index.html 与项目根目录
你可能已经注意到,在一个 Vite 项目中,index.html 在项目最外层而不是在 public 文件夹内。这是有意而为之的:在开发期间 Vite 是一个服务器,而 index.html 是该 Vite 项目的入口文件。
Vite 将 index.html 视为源码和模块图的一部分。Vite 解析 <script type=“module” src=“…”> ,这个标签指向你的 JavaScript 源码。甚至内联引入 JavaScript 的 <script type=“module”> 和引用 CSS 的 <link href> 也能利用 Vite 特有的功能被解析。另外,index.html 中的 URL 将被自动转换,因此不再需要 %PUBLIC_URL% 占位符了。
与静态 HTTP 服务器类似,Vite 也有 “根目录” 的概念,即服务文件的位置,在接下来的文档中你将看到它会以 <root> 代称。源码中的绝对 URL 路径将以项目的 “根” 作为基础来解析,因此你可以像在普通的静态文件服务器上一样编写代码(并且功能更强大!)。Vite 还能够处理依赖关系,解析处于根目录外的文件位置,这使得它即使在基于 monorepo 的方案中也十分有用。
Vite 也支持多个 .html 作入口点的 多页面应用模式。
八、指定替代根目录
执行 vite 命令会以当前工作目录作为根目录启动开发服务器。你也可以通过 vite serve some/sub/dir 来指定一个不同的根目录。 需要注意的是,Vite 也会在项目的根目录中寻找 它的配置文件(即 vite.config.js),所以如果更改了根目录,你需要将配置文件一起移动过去。
九、命令行界面
在安装了 Vite 的项目中,可以在 npm scripts 中使用 vite 可执行文件,或者直接使用 npx vite 运行它。下面是通过脚手架创建的 Vite 项目中默认的 npm scripts:
{
"scripts": {
"dev": "vite", // 启动开发服务器,别名:`vite dev`,`vite serve`
"build": "vite build", // 为生产环境构建产物
"preview": "vite preview" // 本地预览生产构建产物
}
}
可以指定额外的命令行选项,如 --port 或 --open。运行 npx vite --help 获得完整的命令行选项列表。
查看 命令行界面 了解更多细节。
十、使用未发布的功能
git clone https://github.com/vitejs/vite.git
cd vite
pnpm install
cd packages/vite
pnpm run build
pnpm link --global # 在这一步中可使用你喜欢的包管理器
然后,回到你的 Vite 项目并运行 pnpm link --global vite(或者使用你的其他包管理工具来全局链接 vite)。重新启动开发服务器来体验新功能吧!