vue项目创建+eslint+Prettier+git提交规范(commitizen+hooks+husk)

# 步骤 1、使用 vue-cli 创建项目

这一小节我们需要创建一个 vue3 的项目,而创建项目的方式依然是通过 vue-cli 进行创建。

不过这里有一点大家需要注意,因为我们需要使用最新的模板,所以请保证你的 vue-cli 的版本在 4.5.13 以上,你可以通过以下的方式来查看你的 vue-cli 版本:

vue -V
------
@vue/cli 4.5.13 // 输出版本号

如果你需要升级版本,那么可以通过以下指令进行升级:

npm update -g @vue/cli

具体的方式也可以点击 这里 进行参考。

升级之后,即可通过以下方式创建最新的 vue3 项目,终端输入 vue create 项目名称 ,即可进入 模板选择

1.以下内容是创建项目时的手动选择

// 利用 vue-cli 创建项目
vue create imooc-admin
// 进入模板选择
Vue CLI v4.5.13
? Please pick a preset://翻译:请选择一个预设Please请pick选择a一个preset预设、模版Default ([Vue 2] babel, eslint)//翻译:Default 默认(Vue 2包含babel, eslint)Default (Vue 3) ([Vue 3] babel, eslint) //翻译:Default 默认(Vue 3包含babel, eslint)
> Manually select features  // 选择手动配置,翻译:Manually手动 select选择 features配置/功能/特性
// ----------------------------------------------------------
? Check the features needed for your project: //翻译:检查项目所需的功能:(*) Choose Vue version // 选择 vue 版本(默认、如果不是默认就选择)(*) Babel // 使用 babel( ) TypeScript // 不使用 ts( ) Progressive Web App (PWA) Support // 不使用 PWA(*) Router // 添加 vue-router(*) Vuex // 添加 vuex
>(*) CSS Pre-processors // 使用 css 预处理器(*) Linter / Formatter // 代码格式化( ) Unit Testing // 不配置测试( ) E2E Testing  // // 不配置测试
// ----------------------------------------------------------Choose a version of Vue.js that you want to start the project with //翻译:选择要启动项目的Vue.js版本2.x
> 3.x // 选择 vue 3.0 版本
// ----------------------------------------------------------Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) n //翻译:是否使用路由器的历史记录模式?(需要正确的服务器设置,以便在生产中进行索引回退)//不使用 history模式 的路由// ----------------------------------------------------------? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): //翻译:选择一个CSS预处理器(默认支持PostCSS、Autoprefixer和CSS模块)
> Sass/SCSS (with dart-sass) // 使用基于 dart-sass 的 scss 预处理器Sass/SCSS (with node-sass)LessStylus
// ----------------------------------------------------------
? Pick a linter / formatter config: //翻译:选择一个 linter / formatter 配置ESLint with error prevention only //翻译:仅包含错误的ESLintESLint + Airbnb config//翻译:Airbnb的ESLint延伸规则
> ESLint + Standard config // 使用 ESLint 标准代码格式化方案ESLint + Prettier
// ----------------------------------------------------------
? Pick additional lint features: //翻译:选择额外的 lint 特性(*) Lint on save //
>(*) Lint and fix on commit  // 保存时 && 提交时,都进行 lint
// ----------------------------------------------------------
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)//翻译:你更喜欢在哪里放置Babel、ESLint等配置?(使用箭头键)
> In dedicated config files // 单独的配置文件In package.json
// ----------------------------------------------------------Save this as a preset for future projects? (y/N) n // 不存储预设

等待片刻之后,你的项目就会生成成功。

生成之后,可以通过以下两个指令来运行你的项目:

cd 项目目录
npm run serve

执行成功之后,项目即可运行!此时整体项目已经创建完成

2.升级最新的 vue 版本以支持 script setup 语法(最新版本即可,可以忽略此步骤)

因为使用 @vue/cli-v4.5.13 版本创建的项目中,vue 的版本为 v 3.0.0 。

但是我们的项目需要使用最新的 script setup 语法,该语法在 v 3.0.0 版本中是不支持的,所以我们需要升级 vue 版本。

大家可以通过以下指令进行升级:

执行:

npm i vue@3.2.8 vue-router@4.0.11 vuex@4.0.2

升级之后,查看 package.json 得到的版本应为:

"vue": "^3.2.8",
"vue-router": "^4.0.11",
"vuex": "^4.0.2"

注:下载项目的时候package.json是没有 vuex 和 vue-router 的,需要手动下载,更新到最新即可,如若不是强需,不需指定版本

步骤 2、配置使用 ESLint


? Pick a linter / formatter config: //翻译:选择一个 linter / formatter 配置ESLint with error prevention only //翻译:仅包含错误的ESLintESLint + Airbnb config//翻译:Airbnb的ESLint延伸规则
> ESLint + Standard config // 使用 ESLint 标准代码格式化方案ESLint + Prettier
  //在选择以上内容的时候,项目会生成一个.eslintrc.js的文件,该文件是ESLint的配置文件。"semi": false,//在一段后面是否尾随分号"singleQuote": true,//是否引用单引号(双引号会改变为单引号?"trailingComma": "all"//在多行是否在对象或数组最后一个元素后面添加逗号 all所有添加,es5 none不去添加逗号"tabWidth": 2,//缩进宽度"printWidth": 80,//每行字符数

步骤 3、使用 Prettier

? Pick a linter / formatter config: //翻译:选择一个 linter / formatter 配置ESLint with error prevention only //翻译:仅包含错误的ESLintESLint + Airbnb config//翻译:Airbnb的ESLint延伸规则

 安装prettier

安装成功之后,在项目根目录下创建一个.prettierrc.js的文件,该文件是prettier的配置文件。(如果自动生成则不需要创建) 在改文件中写入如下配置 

 //在选择以上内容的时候,项目会生成一个.prettierrc.js的文件,该文件是prettier的配置文件。(没有需要手动配置)"semi": false,//在一段后面是否尾随分号"singleQuote": true,//是否引用单引号(双引号会改变为单引号?"trailingComma": "none"//在多行是否在对象或数组最后一个元素后面添加逗号 all所有添加,es5 none不去添加逗号"tabWidth": 2,//缩进宽度----暂时不配置,因为vscode已经配置了"printWidth": 80,//每行字符数---暂时不配置,

步骤 4、配置 VScode

一、设置自动保存

1 打开设置

2.在搜索框中输入 save 

3.找到Format On Save勾选中,这个是自动保存 

 

二、设置空格数

1.打开设置

2.在搜索框中输入 tab size或者直接滑动找也行,在上面比较容易找到

3.找到tab size vscode默认是 4 设置为 2,注:空格数值,对于VScode 默认一个tab等于4个空格,而ESLint希望一个tab为两个空格

 

 三、设置代码格式化

注意:如果vscode安装多个代码格式化,回发生冲突,右键找到使用什么格式化,在弹出层里面选择prettier 1.直接右键 2.找到使用...格式化文档

 

3.在弹窗中进行选择prettier 

 

四、ESLint和prettier冲突

直接在.eslintrc.js文件中进行配置即可

步骤5、Git提交规范

对于提交规范来说,不同的团队可能有不同的标准,那么今天就用目前使用较多的 Angular团队规范所延伸出来的Conventional Commits specification(约定式提交)作为例子

什么叫约定是提交规范? 约定式提交规范是一种基本提交信息的轻量级约定,他提供了一组简单规则来创建的提交历史,这更有利于编写自动化工具,通过在提交信息中描述功能,修复和破坏性变更,使用这种惯例鱼SemVer相互对应

提交结构规范要求

 

<type>[optional scope]: <description>[optional body][optional footer(s)]

翻译:

<类型>[可选 范围]: <描述>[可选 正文][可选 脚注]

 解释:

<类型> 可选(新功能,修复,变更
[可选 范围]:文件名称,
<描述>:修改了什么
[可选 正文]:修改的原因
[可选 脚注]:修改的细节

 举例说明:

doce [登陆授权]:修改了登陆授权的文档
将文档中的公司授权改为企业授权
第188个issue

 

如果说按个按照约定是进行提交,那么是一件很痛苦的事情,所以我们需要使用一个工具来帮助我们生成规范的提交信息,可以使用 Github:cz-cli (commitizen)进行代码提交 当使用commitizen进行代码提交(git commit)时,commitizen会根据你在提交时填写所有必须得提交字段

一、安装commitizen

//-g是全局安装。根据自己需求判断是否全局安装
npm install -g commitizen//不带版本
npm install -g commitizen@4.2.4

 

二、安装并配置 cz-conventional 插件

1.使用npm下载 cz-conventional
npm install -D cz-conventional//安装不通过使用带版本的,可能是npm版本太高npm i cz-customizable@6.3.0 --save-dev

 

2.添加一下配置到package.json中 

"config": {"commitizen": {"path": "node_modules/cz-conventional"}}

 3.项目跟目录下创建,.cz-config.js自定义提示文件

module.exports = {//可选类型---代表了commit的类型types: [{ value: 'feat', name: 'feat: 新增功能' },{ value: 'fix', name: 'fix: 修复bug' },{ value: 'docs', name: 'docs: 修改文档' },{ value: 'style', name: 'style: 修改样式' },{ value: 'refactor', name: 'refactor: 代码重构' },{ value: 'perf', name: 'perf: 性能优化' },{ value: 'test', name: 'test: 测试相关' },{ value: 'chore', name: 'chore: 构建过程或辅助工具的变动' },{ value: 'revert', name: 'revert: 回滚到上一个版本' },{ value: 'build', name: 'build: 打包构建' },],//步骤--messages: {type: '请选择提交的类型:',customScope: '请输入修改的范围(可选):',subject: '请简要描述提交(必填):',body: '请输入详细描述(可选):',footer: '请输入要关闭的issue(可选):',confirmCommit: '确认提交?(y/n)'},subjectLimit: 72, // 限制提交信息的长度
}

 

4使用git cz 代替 git commit

使用 git cz 代替git commit ,即可看到提示内容

注:如果想要跳过步骤如下

 // 跳过步骤skipQuestions: ['body', 'footer'],

注:如果忘记某个提交步骤 git cz 怎么解决? 这时候可以使用git hooks钩子函数,

5使用git hooks 检查提交描述是否符合规范要求

1:npm 必须在7.x以上,如果低于可以使用npm i -g npm 2:安装依赖

 

npm install --save-dev @commitlint/config-conventional@12.1.4 @commitlint/cli@12.1.4

3:创建commitlint.config.js文件

//可以将下面代码征途赋值到控制台执行,即可自动创建文件并写入进去配置完成
echo "module.exports = {extends: ['@commitlint/config-conventional']}"> commitlint.config.js// 或者自己手动创建,并将一下代码赋值到`commitlint.config.js`文件内
module.exports = {extends: ['@commitlint/config-conventional']}

 4:打开commitlint.config增加配置项

module.exports = {// 继承的规则extends: ['@commitlint/config-conventional'],roles: {// 2type的类型定义:表示git提交的type必须在一下类型范围之内'type-enum': [// 验证的错误级别2,// always在什么情况下验证'always',// 泛型内容---对应的是`.cz-config.js`中定义的types的name和value值['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore']],// 大小写不做限制'subject-case': [0]}
}

 5 husk 用来检测 hooks 工具 5.1 安装

//一开始使用不带版本的一直报错
//后面重新创建使用的是带版本的就没报错,顺利走来的,不知道是不是因为这个原因npm install husky@7.0.1 --save-dev//

 5.2 启动 husky 生成一个.husky文件

  npx husky install

 5.3 在package.json中生成 prepare指令(需要npm>7.0版本)

npm set-script prepare "husky install"//我这边运行命令不生效,所以用的方式是手动添加

 或者手动添加

 "prepare":"husky install"

 5.4 执行 prepare指令

npm run prepare

 5.5 执行成功会出现下面图片中的内容

 

5.6 添加commitlinthookhusky中,并指令在commit-msghooks下执行 npx--no-install commitlint --edit "$1"的指令 也就是commitlint配合hook,husky使用 

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

 5.7此时的.husky的文件结构

 走到这一步 至此,不符合规范的commit将不再可提交:

 

那么至此,我们就已经可以处理好了,强制规范的提交要求,到现在不符合规范的提交信息,将不可在被提交

那么到这里我们的规范化目标,就完成了吗?

当然没有!

现在我们还去缺少一个规范化的处理,那就是**代码格式提交规范处理!“

看到这里可能说,咿!这个怎么看着这么验收啊?这个事情我们之前不是做过了吗?还需要再处理什么?(请看后续)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Debian linux忘记root密码如何重置

重启电脑, 到下图再按 e 键 在页面中可以看到有个ro的行&#xff0c;在ro行的尾部&#xff0c;添加 rw init/bin/bas 3. ctrl X 启动系统&#xff0c;最后会进入命令行模式 4. 重设root密码&#xff0c;输入命令 passwd root&#xff0c;按照提示输入新密码并确认 5. 重启系…

基于Python的自动化测试框架-Pytest总结-第一弹基础

Pytest总结第一弹基础 入门知识点安装pytest运行pytest测试用例发现规则执行方式命令行执行参数 配置发现规则 如何编写测试Case基础案例断言语句的使用pytest.fail() 和 Exceptions自定义断言函数异常测试测试类形式 pytest的Fixture使用Fixture入门案例使用fixture的Setup、T…

昇思25天学习打卡营第8天|模型训练

昇思25天学习打卡营第8天|模型训练 前言模型训练构建数据集定义神经网络模型定义超参、损失函数和优化器超参损失函数优化器 训练与评估 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型平台和CSDN邀请体验昇思大模型&#xff01;从…

linux中如何启动python虚拟环境

找到python虚拟环境所在目录 执行下面的命令即可 source auth_python/bin/activate

【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code

【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code 前言node.js开发环境配置解决pnpm 不是内部或外部命令的问题&#xff08;pnpm安装教程&#xff09; 解决 pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。 前言 最近部…

【代码随想录】【算法训练营】【第49天】 [300]最长递增子序列 [674]最长连续递增序列 [718]最长重复子数组

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 49&#xff0c;周二&#xff0c;坚持不了一点~ 题目详情 [300] 最长递增子序列 题目描述 300 最长递增子序列 解题思路 前提&#xff1a;最大递增子序列的长度 思路&#xff1a;动态规划 d…

基于X86+FPGA的精密加工检测设备解决方案

应用场景 随着我国高新技术的发展和国防现代化发展&#xff0c;航空、航天等领域需 要的大型光电子器件&#xff0c;微型电子机械、 光 电信息等领域需要的微型器件&#xff0c;还有一些复杂零件的加工需求日益增加&#xff0c;这些都需要借助精密甚至超精密的加工检测设备 客…

esp12实现的网络时钟校准

网络时间的获取是通过向第三方服务器发送GET请求获取并解析出来的。 在本篇博客中&#xff0c;网络时间的获取是一种自动的行为&#xff0c;当系统成功连接WiFi获取到网络天气后&#xff0c;系统将自动获取并解析得到时间和日期&#xff0c;为了减少误差每两分钟左右进行一次校…

web平台—apache

web平台—apache 1. 学apache前需要知道的知识点2. apache详解2.1 概述2.2 工作模式2.3 启动apache网站整体流程2.4 相关文件保存位置2.5 配置文件详解 3. apache配置实验实验1&#xff1a;设置apache的目录别名实验2&#xff1a;apache的用户认证实验3&#xff1a;虚拟主机 (重…

江门MES制造执行系统:助力工厂实现智能化管理

江门MES制造执行系统(MES)在工厂实现智能化管理方面发挥着重要作用&#xff0c;以下是它的一些助力方面&#xff1a; 实时监控与控制&#xff1a;江门MES系统可以实时监控生产过程中的各个环节&#xff0c;包括设备状态、生产进度、质量指标等&#xff0c;帮助工厂管理人员及时…

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection 论文链接&#xff1a;http://arxiv.org/abs/2406.03459 代码链接&#xff1a;https://github.com/Atten4Vis/LW-DETR 一、摘要 介绍了一种轻量级检测变换器LWDETR&#xff0c;它在实时物体检测方面超越…

CF1981D Turtle and Multiplication 题解

Turtle and Multiplication 传送门 Turtle just learned how to multiply two integers in his math class, and he was very excited. Then Piggy gave him an integer n n n , and asked him to construct a sequence a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1​,…

Java [ 基础 ] Stream流 ✨

✨探索Java基础Stream流✨ 在现代Java编程中&#xff0c;Stream是一个非常强大的工具&#xff0c;它提供了一种更高效和简洁的方式来处理集合数据。在这篇博客中&#xff0c;我们将深入探讨Java中的Stream流&#xff0c;介绍它的基础知识、常见操作和一些实用示例。 什么是Str…

10-错误-java.lang.IllegalStateException Stopwatch is not running

10-错误-java.lang.IllegalStateException Stopwatch is not running 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff08;纯纯技术文&…

用易查分下发《致家长一封信》,支持在线手写签名,一键导出PDF!

暑假来临之际&#xff0c;学校通常需要下发致家长信&#xff0c;以正式、书面的形式向家长传达重要的通知或建议。传统的发放方式如家长签字后学生将回执单上交&#xff0c;容易存在丢失、遗忘的问题。 那么如何更高效、便捷、安全地将致家长一封信送达给每位家长呢&#xff1f…

Linux[高级管理]——Squid代理服务器的部署和应用(反向代理详解)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月24日11点11分 &#x1f004;️文章质量&#xff1a;95分 目录 ————前言———— Squid的几种模式…

游戏录制视频软件哪个好?这份攻略帮你搞定!

随着游戏行业的快速发展&#xff0c;越来越多的玩家开始录制游戏视频&#xff0c;以便分享自己的游戏体验或保存珍贵回忆。而选择一款合适的游戏录制视频软件显得尤为重要。可是游戏录制视频软件哪个好呢&#xff1f;本文将为大家介绍两款优秀的游戏录制视频软件&#xff0c;通…

Vatee万腾平台:科技驱动,智慧生活

随着科技的飞速发展&#xff0c;我们生活的方方面面正在经历前所未有的变革。Vatee万腾平台&#xff0c;作为这一变革的推动者之一&#xff0c;以其科技驱动的理念&#xff0c;正引领我们迈向更加智慧、便捷的生活。 Vatee万腾平台&#xff0c;是一个集科技研发、应用创新、服务…

Unity热更方案HybridCLR+YooAsset,纯c#开发热更,保姆级教程,从零开始

文章目录&#xff1a; 一、前言二、创建空工程三、接入HybridCLR四、接入YooAsset五、搭建本地资源服务器Nginx六、实战七、最后 一、前言 unity热更有很多方案&#xff0c;各种lua热更&#xff0c;ILRuntime等&#xff0c;这里介绍的是YooAssetHybridCLR的热更方案&#xff0…

jvm性能监控常用工具

在java的/bin目录下有许多java自带的工具。 我们常用的有 基础工具 jar:创建和管理jar文件 java&#xff1a;java运行工具&#xff0c;用于运行class文件或jar文件 javac&#xff1a;java的编译器 javadoc&#xff1a;java的API文档生成工具 性能监控和故障处理 jps jstat…