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

news2024/11/18 23:29:07

# 步骤 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)
  Less
  Stylus
// ----------------------------------------------------------
? Pick a linter / formatter config: //翻译:选择一个 linter / formatter 配置
  ESLint with error prevention only //翻译:仅包含错误的ESLint
  ESLint + 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 //翻译:仅包含错误的ESLint
  ESLint + 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 //翻译:仅包含错误的ESLint
  ESLint + 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.coloradmin.cn/o/1882316.html

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

相关文章

Android 添加LBS辅助定位

1.软件需求&#xff1a; 某Android设备没有sim卡但其支持定位&#xff0c;客户需求为在已有的Android中添加LBS网络定位&#xff0c;用以辅助gps定位。 2.思路分析 首先看到这个需求笔者是比较懵逼的&#xff0c;秉持着客户是上帝的原则&#xff0c;笔者首先先了解了一下什么…

双向广搜——AcWing 190. 字串变换

双向广搜 定义 双向广搜是图搜索算法的一种变体&#xff0c;与传统的单向广搜不同&#xff0c;它同时从起点和终点&#xff08;或目标状态&#xff09;开始进行搜索&#xff0c;直到两个搜索的前沿相遇为止。这种方法可以在某些情况下显著减少搜索空间&#xff0c;尤其是在寻…

安装PyTorch详细过程(个人过程仅供参考)

1.安装anaconda 2.创建一个虚拟环境 以上步骤默认已经完毕&#xff0c;毕竟只是记录pytorch的安装过程 3.查看个人电脑CUDA版本 winr 输入cmd 回车 输入指令 nvidia-smi 右上角为该电脑所支持的最高CUDA版本 输入命令 nvcc -V 图中即为该电脑所安装的CUDA版本 记住该版…

为什么安装了SSL证书还是不能HTTPS访问?

即便是正确安装了SSL证书&#xff0c;有时网站仍然无法通过HTTPS正常访问&#xff0c;这背后可能隐藏着多种原因。以下是一些常见的问题及解决方案&#xff0c;帮助您排查并解决这一困扰。 PC点此申请&#xff1a;SSL证书申请_https证书下载-极速签发 注册填写注册码230918&a…

文献解读-长读长测序-第十三期|《PrecisionFDA真相挑战第二版:利用短读长和长读长在难比对区域进行变异检测》

关键词&#xff1a;基因组&#xff1b;长读长测序&#xff1b;基准测试&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;PrecisionFDA Truth Challenge V2: Calling variants from short and long reads in difficult-to-map regions标题&#xff08;中文…

零基础光速入门AI绘画,SD保姆攻略

前言 大家好&#xff0c;我是AI绘画咪酱。一名AIGC狂热爱好者&#xff0c;目前正在AI绘画领域进行深入的探索。 我花了一个月时间把SD研究了一遍&#xff0c;秉持着用有趣、易懂的文字让小白也可以零基础光速使用SD&#xff08;stable diffusion&#xff09;入门AI绘画&#…

家政小程序的开发,带动市场快速发展,提高家政服务质量

当下生活水平逐渐提高&#xff0c;也增加了年轻人的工作压力&#xff0c;同时老龄化也在日益增加&#xff0c;使得大众对家政的需求日益提高&#xff0c;能力、服务质量高的家政人员能够有效提高大众的生活幸福指数。 但是&#xff0c;传统的家政服务模式存在着效率低、用户与…

Java语法系列 小白入门参考资料 逻辑控制

顺序结构 顾名思义&#xff0c;就是按着从上到下的顺序执行代码 public class Demo {public static void main(String[] args) {System.out.println("aaa");System.out.println("bbb");System.out.println("ccc");} }如果调整代码的书写顺序, …

手撕Transformer!!从每一模块原理讲解到代码实现【超详细!】

文章目录 一、位置编码位置编码的原理代码解释 二、多头注意力三、前馈神经网络&#xff08;FeedForward&#xff09;和层归一化&#xff08;NormLayer&#xff09;FeedForward 模块代码解析 NormLayer 模块代码解析 四、EncoderEncoder 类EncoderLayer 类前向传播过程 五、Dec…

喜提一等奖!白鲸开源在“创业北京”创业创新大赛海淀区选拔赛决赛表现亮眼

6月25日&#xff0c;第七届“创业北京”创业创新大赛海淀区选拔赛决赛在中关村东升国际科学园成功举办。本次活动由海淀区人力资源和社会保障局、中关村科学城管委会主办&#xff0c;以“创响新时代 共圆中国梦”为主题&#xff0c;活动现场主体赛先进制造赛道和主体赛现代服务…

网络安全在2024好入行吗?

前言 024年的今天&#xff0c;慎重进入网安行业吧&#xff0c;目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多&#xff0c;还有很多高中被挖过来的大佬。 理由很简单&#xff0c;目前来说&#xff0c;信息安全的圈子人少&#xff0c;985、211院校很多都才建立…

网站提示不安全怎么办

当您访问一个网站时&#xff0c;如果浏览器提示该网站不安全&#xff0c;这通常意味着以下几个问题之一&#xff0c;以及相应的解决办法&#xff1a; 一、未启用HTTPS协议&#xff1a; 解决方法&#xff1a;确保网站启用了HTTPS协议。这意味着您需要为您的网站部署一个有效的…

2024年最适合Python小白的零基础入门教程!

伴随着云计算、大数据、AI等技术的迅速崛起&#xff0c;市场对Python人才的需求和市场人才的匮乏&#xff0c;让长期沉默的Python语言一下子备受众人的关注&#xff0c;再加上简单易学&#xff0c;使得Python一跃成为TIOBE排行榜的第一。 准备学Python或者想学Python的小伙伴们…

1.linux操作系统CPU负载

目录 概述CPU平均负载查看平均负载结束 概述 CPU 使用率 和CPU 平均使用率。 CPU平均负载 单位时间内系统处于 [可运行状态] 和 [不可中断状态] 的平均进程数&#xff0c;就是平均活跃进程数&#xff0c;和CPU使用率并没有直接关系 可运行状态 正在使用CPU或者正等待CPU的进…

ITK-读取/写入图像

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 绪论 在本文中&#xff0c;将介绍如何使用ITK&#xff08;Insight Segmentation and Registration Toolkit&#xff09;库来读取…

【毕业一年,聊聊什么】

毕业一年&#xff0c;聊聊什么 一&#xff0c;引子 武汉&#xff0c;大雨连连&#xff0c;大雨如柱&#xff0c;大雨倾盆&#xff0c;任性的&#xff0c;傲娇的&#xff0c;一点没有想停的样子。 下雨天&#xff0c;好适合Emo啊&#xff0c;该我了&#xff0c;请允许。 二&…

Meilisearch 安装和使用教程

如今搜索功能已成为几乎所有应用不可或缺的一部分。无论是电商平台、内容管理系统&#xff0c;还是企业内部知识库&#xff0c;用户都期待能够快速、准确地找到他们需要的信息。然而&#xff0c;传统的搜索解决方案往往面临着诸多挑战&#xff1a;响应速度慢、相关性差、难以适…

分享值得推荐的6大磁力搜索器平台,亲测有效!

昨天晚上&#xff0c;隔壁出租屋的小美私信阿星&#xff0c;问哪里能下载到有趣的资源&#xff0c;比如漫画、影音、学习资料等等。 这直接问到了阿星的强项了&#xff01;其实网络上&#xff0c;高手和小白之间&#xff0c;只差一个搜索引擎。 今天阿星想和大家分享几款好用…

常用图片处理操作

静态图片文件转base64 import base64 with open(1.png, rb) as f:source f.read() base64_img base64.b64encode(source)base64转静态图片文件 imgdata base64.b64decode(base64_img)# 将图片保存为文件 with open("new.png", wb) as f:f.write(imgdata)PS:这里…

IT运维管理与运营管理的创新与实践

IT运维管理与运营管理的创新与实践 在信息化飞速发展的今天&#xff0c;IT运维管理与运营管理已成为企业保障业务连续性和提升运营效率的关键环节。随着数字化转型的深入&#xff0c;企业对IT运维管理的要求不断提高。本文结合《IT运维管理与运营管理》文档的内容&#xff0c;…