vue+ts+pinia+axios+element/vant+eslint+prettier+hook+sass/less+
1.pnpm create vite
2.输入项目名
3.选择模式——vue
4.customize with create-vue
5.选择需要的项目配置
6.我们使用git init来生成一个仓库。然后git add . ,git commit- m”” 来进行初次提交。
7.项目构建完成后,切换到对应目录,安装依赖,启动项目。
8.构建Prettier和Eslint的联系
构建Prettier和Eslint的联系,需要安装一下下面的两个插件。
eslint-config-prettier //用于解决和 Prettier 冲突的 ESLint 的配置
eslint-plugin-prettier //启用 eslint-plugin-prettier
1 | pnpm i eslint-config-prettier eslint-plugin-prettier -D |
修改 ESLint 配置,使 Eslint 兼容 Prettier 规则
打开.eslintrc.cjs文件,放在extends配置项的末尾,因为extends中后引入的规则会覆盖前面的规则。
那么就可以在.prettierrc.json 中定义自己的代码风格校验。本地的prettier插件会根据这个文件来格式化,项目配置的prettier也会根据该文件来格式化。且eslint的风格与prettier风格冲突的地方会以prettier为主。
1 | plugin:prettier/recommended //如果说版本冲突就删除一个版本的prettier |
1 | /* eslint-env node */ |
如遇到以下的报错,分析日志信息,发现eslint-config-prettier出现了两个版本,猜测是其他插件包依赖的eslint-config-prettier版本是8.10.0,当前安装的是9.1.0。导致出现了版本冲突,删除9.1.0的eslint-config-prettier,装一下8.10.0就可以了。
//下面这一部分很麻烦
9.集成lint-staged和husky
int-staged 是一个专门针对已放入 Git 暂存区的文件进行检查的工具
husky 能提供监听 Git 操作并执行脚本代码的能力
安装 lint-staged和husky
1 | pnpm i lint-staged husky --save-dev |
配置lint-staged
在package.json中添加下面的代码,匹配暂存区所有的js,vue文件,并执行命令。
1 | "lint-staged": { |
配置husky,实现在git 提交时执行 lint-staged
配置脚本钩子,实现在”pnpm i”后自动执行对应的hooks
在 package.json的”scripts“中配置快捷命令,用来在安装项目依赖时生成 husky 的相关文件,配置项postinstall或者prepare都可以。
1 | { |
在 package.json 文件中,”postinstall” 是一个特殊的脚本钩子,它在 npm install(或等效的 pnpm i、yarn install)命令执行后自动运行。这个特性是由 npm(以及兼容的包管理器如 pnpm 和 yarn)提供的,旨在在安装包后自动执行某些任务。
当在项目中使用 pnpm i 命令安装依赖时,pnpm 会检查 package.json 文件中的 “scripts” 部分,特别是 “postinstall” 脚本。如果存在 “postinstall” 脚本,pnpm 将在所有包安装完成后自动执行该脚本中定义的命令。
在 package.json 中,”postinstall” 被设置为 “husky install”。这意味着每次执行 pnpm i 安装依赖后,pnpm 会自动执行 husky install 命令。这个命令的作用是安装 Husky,Husky是一个流行的 Git 钩子工具,用于在 Git 操作(如提交、推送等)时自动运行脚本。
“prepare” 和 “postinstall” 是 package.json 文件中定义的两个不同的 npm 生命周期钩子,它们在不同的时间点被触发,适用于不同的用途。下面是它们的主要区别:
- 触发时机:
- “prepare” : 这个钩子在几个关键场景中被触发,包括在本地执行 npm install(没有参数)后、在作为 git 依赖安装到其他项目之前、以及在运行 npm pack 和 npm publish 之前(在打包“npm pack”或发布“npm publish”你的库到 npm 之前,会执行 “prepare” 脚本。这样可以确保在打包或发布前运行必要的构建步骤或检查。)。
- “postinstall” : 这个钩子仅在 npm install 或等效命令(如 pnpm i 或 yarn install)执行后触发,不论是在本地安装项目依赖时,还是作为依赖安装到其他项目中时。
- 用途:
- “prepare” : 通常用于在发布包之前执行构建脚本或其他准备工作。例如,如果你的包需要编译或转换代码,或者需要在发布前进行某些自动化检查,那么 “prepare” 是合适的选择。
- “postinstall” : 通常用于在安装项目依赖后执行一些设置或配置工作。比如安装或配置工具,或执行一些只在项目初次安装依赖时需要的操作。
- 场景应用:
- 使用 “prepare” 当你的包需要在发布前进行构建或准备工作,或者当你的包被作为 git 依赖安装时。
- 使用 “postinstall” 适合在每次安装依赖时都需要执行的操作,如安装 Git 钩子或其他项目配置。
如果对npm script命令不太了解参考下方链接进行学习
www.ruanyifeng.com/blog/2016/1…
配置完成后,执行pnpm i,会在项目根目录生成 .husky/_ 目录。
生成pre-commit文件
执行下面的命令, husky会 生成 git 操作的监听钩子脚本。
1 | npx husky add .husky/pre-commit "npx lint-staged"//该命令已经废弃,使用手动添加 |
打开.husky/pre-commit 文件,可以看到以下内容,git commit时,这个脚本作为 Git 钩子运行,使用 lint-staged 来对暂存区中的文件执行代码检查。
如果没有可以手动更改
到此完成了git commit时自动去触发eslint的检测和修复。修改代码后git add . git commit,就可以发现代码检测和修复生效了。
1 | #!/bin/sh |
10.Git 提交规范建设校验commit格式
前置知识
commitlint是什么?
当我们运行 git commmit -m ‘xxx’ 时,用来检查 xxx 是否满足固定格式的工具。简单来说,就是制定提交规范
提交的格式,与常见的规范
- 提交格式 (注意冒号后面有空格)
git commit -m [optional scope]:
type :用于表明我们这次提交的改动类型,是新增了功能?还是修改了测试代码?又或者是更新了文档?
optional scope:一个可选的修改范围。用于标识此次提交主要涉及到代码中哪个模块。
description:一句话描述此次提交的主要内容,做到言简意赅。
- 常用的 type 类型
安装commitlint
1 | pnpm i --save-dev @commitlint/config-conventional @commitlint/cli |
生成commit-msg文件
文件中可以配置在 **git commit 时对 commit 信息的校验指令
可手动创建文件再输入文件内容,但是建议使用命令创建,命令如下:
1 | npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'//已经废弃 |
上面命令执行成功后会在 .husky 目录下生成一个 commit-msg 文件,该文件的内容如下,表示在 git commit 前执行一下 npx –no – commitlint –edit $1 指令。
当你进行 Git 提交时,这个 commit-msg 文件会被触发,它先初始化 Husky,然后使用commitlint 来检查你的提交信息是否符合预设的规范。
1 | #!/usr/bin/env sh |
检查一下可能要手动配置
项目根目录创建名为commitlint.config.js的文件,配置提交规范
1 | module.exports = { |
提供Commit提示信息,实现交互式commit,简化提交的负担
安装commitizen、cz-customizable
commitizen: commit命令行提示
cz-customizable:自定义的Commitizen的交互信息
1 | pnpm add commitizen cz-customizable -g//需要开启管理员权限 |
配置信息
根目录新建一个.cz-config.cjs文件(一开始创建的是.js文件,提示使用cjs代替,于是修改为.cjs文件),在根目录创建的.cz-config.cjs 添加以下代码,自定义commit提示内容。
1 | module.exports = { |
package.json添加以下内容:
1 | "scripts" : { |
1 | ... |
配置完成后,输入git cz,出现下面的内容,说明接入成功了
后面的提交,使用git cz来代替git commit
但是很有可能报错,如果是多个pretter可以注释掉在前面package.json配置的
如果是eslint检验commitlint.config.js
可以让他忽略对这个文件的校验(在文件顶部加上/* eslint-disable */)
9.另外一种husky(黑马)


1 | pnpm dlx husky-init && pnpm install |
10.其他可扩展的规范校验接入
- 集成Style-lint,提交时校验并格式化css、less、scss代码
- 接入Eslint-plugin-filenames,实现对文件夹文件名的命名校验
- 补充Prettier、Eslint自定义规则
配置全局 scss 样式文件
安装saas
1 | pnpm i sass -d |
新增样式文件
在 src/assets 下新增 style 文件夹,用于存放全局样式文件,新建 main.scss, 设置一个用于测试的颜色变量
1 | $primary-color: #007bff; |
如何将这个全局样式文件全局注入到项目中呢?vite.config.ts添加下方配置
1 | css:{ |
组件内使用
1 |
|
配置路径别名
依赖安装
@types/node 是一个 NPM 包,它的作用是为 Node.js 环境中的 JavaScript 提供 TypeScript 类型定义。当在 TypeScript 项目中使用 Node.js 时,这个包非常重要
1 | pnpm i @types/node -D |
vite.config.ts:第一种配置(我使用这种)
1 | // path 模块提供了一些工具函数,用于处理文件与目录的路径 |
vite.config.ts:第二种配置
1 | import { fileURLToPath, URL } from 'node:url' |
tsconfig.json声明paths
无论是使用配置一还是配置二,都需要在tsconfig.json声明paths(只能在tsconfig.json加上下面配置)
1 | { |
请求封装
安装axios
1 | pnpm i axios |
实际使用中可以根据项目修改,比如RESTfulapi中可以自行添加put和delete请求,ResType也可以根据后端的通用返回值动态的去修改
简单二次封装
新增 service 文件夹,service 下新增 http.ts 文件、 api 文件夹。api文件夹下做接口做统一管理,按照模块来划分。详见下方文件树👇。
service
1 |
|
http.ts代码
1 | //http.ts |
login.ts代码
1 | import http from '@/service/http' |
types.ts代码
1 | export interface ILoginParams { |
至此,一个简单地请求封装完成了!!!!
全局状态管理-Pinia的配置
前置知识
pinia的模式有两种:options API 和 composition API。 推荐使用composition API 模式定义store,符合Vue3 setup 的编程模式,让结构更加扁平化。
创建总入口
在src/store目录下创建一个入口index.ts,其中包含一个注册函数registerStore(),其作用是把整个项目的store都提前注册好,最后把所有的store实例挂到appStore透传出去。这样以后,只要我们在项目任何组件要使用pinia时,只要import appStore进来,取对应的store实例就行。
1 | // src/store/index.ts |
composition API模式下不支持某些内置方法,如$reset(),解决方式是重写一下reset方法。
src/utils/storeTools
1 | // src/utils/storeTools |
src/store/index.ts
1 | //src/store/index.ts |
简单修改一下counter Store的内容
1 | //src/store/counter.ts |
总线注册
在src/main.ts项目总线注册
1 | import './assets/main.css' |
具体业务组件使用例子
1 | //src/components/PiniaSetup.vue |
环境变量配置
前置知识
vite 提供了两种模式:具有开发服务器的开发模式(development)和生产模式(production)
在项目根目录下,你可以创建一个或多个环境文件。这些文件以 .env 开头,后面可以跟上为特定模式(如 development、production)指定的后缀。例如:
- .env:在所有的环境中加载。
- .env.local:在所有的环境中加载,但会被 git 忽略。
- .env.development:只在开发环境中加载。
- .env.production:只在生产环境中加载。
新建.env.development、.env.production 文件
根目录新建 .env.development 文件,内容如下:
1 | NODE_ENV=development |
根目录新建 .env.production 文件 ,内容如下:
1 | NODE_ENV=production |
组件中使用:
1 | console.log(import.meta.env.VITE_APP_WEB_URL) |
包区分开发环境和生产环境
package.json 的scripts中加入下面内容
1 | "build:dev": "vite build --mode development", |
报错Delete ␍eslintprettier/prettier
pnpm run lint –fix
本文链接: http://wusterlllry.xyz/2024/03/22/%E6%96%B0%E5%BB%BA%E5%89%8D%E7%AB%AF%E9%A1%B9%E7%9B%AE/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!