Vue 3 正式版已经发布有一段时间了,随着 Vite 脚手架注定成为下一代前端工具链,许多用户都想基于 Vite 来构建 Vue 项目,如果想基于 Vite 构建 Vue 3 项目,社区模板完全满足您的需求,如果想构建 Vite 3 + Vue 3 + JavaScript 项目,那社区模板不太能满足您的需求,因为社区模板提供 Vue 3 项目几乎是基于 Vite 2 + TypeScript 构建,对于不熟悉 TypeScript 语言的用户不是很友好,因此接下来从 0 开始手把手带大家搭建一套规范的 Vite 3 + Vue 3 + JavaScript 前端工程化项目环境。
本文章篇幅较长,从以下几个方面展开:
基础搭建
代码规范
提交规范
自动部署
技术栈
⚡️ Vite 3 - 构建工具(就是快!)
🖖 Vue 3 - 渐进式 JavaScript 框架
🚦 Vue Router - 官方路由管理器
📦 Pinia - 值得你喜欢的 Vue Store
🎨 Less - CSS 预处理器
🔗 Axios - 一个基于 promise 的网络请求库,可以用于浏览器和 node.js
🧰 Husky + Lint-Staged - Git Hook 工具
🛡️ EditorConfig + ESLint + Prettier + Stylelint - 代码规范
🔨 Commitizen + Commitlint - 提交规范
💡 GitHub Actions - 自动部署
基础搭建
构建项目雏形
确保你安装了最新版本的 Node.js,然后在命令行中运行以下命令:
1 | # npm 6.x |
这一指令将会安装并执行 create-vite,它是一个基本模板快速启动项目工具。
在项目被创建后,通过以下步骤安装依赖并启动开发服务器:
1 | # 打开项目 |
Vite 基础配置
Vite 配置文件 vite.config.js 位于项目根目录下,项目启动时会自动读取。
本项目针对公共基础路径、自定义路径别名、服务器选项、构建选项等做了如下基础配置:
1 | import { defineConfig } from 'vite'; |
关于 Vite 更多配置项及用法,请查看 Vite 官网 vitejs.dev/config.
规范目录结构
1 | ├── dist/ |
集成 Vue Router 路由工具
安装依赖
1 | npm i vue-router@4 |
创建路由配置文件
在 src/router 目录下新建 index.js 文件与 modules 文件夹
1 | └── src/ |
关于路由表,建议根据功能的不同来拆分到 modules 文件夹中,好处是:
方便后期维护
减少 Git 合并代码冲突可能性
1 | export default [ |
1 | import { createRouter, createWebHistory } from 'vue-router'; |
根据路由配置的实际情况,需要在 src 下创建 views 目录,用来存储页面组件。
挂载路由配置
在 main.js 文件中挂载路由配置
1 | import { createApp } from 'vue'; |
集成 Pinia 全局状态管理工具
安装依赖
1 | npm i pinia |
创建仓库配置文件
在 src/store 目录下新建 index.js 文件与 modules 文件夹
1 | └── src/ |
1 | import { defineStore } from 'pinia'; |
1 | import { createPinia } from 'pinia'; |
开发中需要将不同功能所对应的状态,拆分到不同的 modules,好处如同路由模块一样。
挂载 Pinia 配置
在 main.js 文件中挂载 Vuex 配置
1 | import { createApp } from 'vue'; |
集成 Axios HTTP 工具
安装依赖
1 | npm i axios |
请求配置
在 utils 目录下创建 request.js 文件,配置好适合自己业务的请求拦截和响应拦截:
1 | └── src/ |
1 | import axios from 'axios'; |
集成 EditorConfig 配置
EditorConfig主要用于统一不同 IDE 编辑器的编码风格。
在项目根目录下添加 .editorconfig 文件:
1 | # 表示是最顶层的 EditorConfig 配置文件 |
很多 IDE 中会默认支持此配置,但是也有些不支持,如:VSCode、Atom、Sublime Text 等。
具体列表可以参考官网,如果在 VSCode 中使用需要安装 EditorConfig for VS Code 插件。
集成 ESLint 配置
ESLint[25] 是针对 EScript 的一款代码检测工具,它可以检测项目中编写不规范的代码,如果写出不符合规范的代码会被警告。
由此我们就可以借助于 ESLint 强大的功能来统一团队的编码规范。
安装依赖ESLint
- ESLint 本体eslint-define-config
- 改善 ESLint 规范编写体验eslint-plugin-vue
- 适用于 Vue 文件的 ESLint 插件eslint-config-airbnb-base
- Airbnb JavaScript 风格指南eslint-plugin-import
- 使用 eslint-config-airbnb-base 时必须安装的前置插件vue-eslint-parser
- 使用 eslint-plugin-vue 时必须安装的 ESLint 解析器
1 | npm i eslint eslint-define-config eslint-config-airbnb-base eslint-plugin-import eslint-plugin-vue vue-eslint-parser -D |
创建 ESLint 配置文件
在项目根目录创建 .eslintrc.js 文件,并填入以下内容:
1 | onst { defineConfig } = require('eslint-define-config'); |
创建 ESLint 过滤规则
在项目根目录添加一个 .eslintignore 文件,内容如下:
1 | dist |
集成 Prettier 配置
Prettier 是一款强大的代码格式化工具,支持 JavaScript、TypeScript、CSS、SCSS、Less、JSX、Angular、Vue、GraphQL、JSON、Markdown 等语言,基本上前端能用到的文件格式它都可以搞定,是当下最流行的代码格式化工具。
1 | npm i prettier -D |
创建 Prettier 配置文件
1 | module.exports = { |
Commit Message 格式规范
值 描述
feat 新增功能
fix 修复问题
docs 文档变更
style 代码格式(不影响功能,例如空格、分号等格式修正)
refactor 代码重构
perf 改善性能
test 测试
build 变更项目构建或外部依赖(例如 scopes: webpack、gulp、npm 等)
ci 更改持续集成软件的配置文件和 package 中的 scripts 命令,例如 scopes: Travis, Circle 等
chore 变更构建流程或辅助工具
revert 代码回退