国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交規(guī)范

這篇具有很好參考價(jià)值的文章主要介紹了【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交規(guī)范。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

本文介紹 vue3-element-admin 如何通過 Husky + Lint-staged + Commitlint + Commitizen + cz-git 來配置 Git 提交代碼規(guī)范。

核心內(nèi)容是配置 Husky 的 pre-commitcommit-msg 兩個(gè)鉤子:

pre-commit:Husky + Lint-staged 整合實(shí)現(xiàn) Git 提交前代碼規(guī)范檢測(cè)/格式化 (前提:ESlint + Prettier + Stylelint 代碼統(tǒng)一規(guī)范);

commit-msg: Husky + Commitlint + Commitizen + cz-git 整合實(shí)現(xiàn)生成規(guī)范化且高度自定義的 Git commit message。

Husky

Husky 是 Git 鉤子工具,可以設(shè)置在 git 各個(gè)階段(pre-commitcommit-msg 等)觸發(fā)。

官方網(wǎng)站:https://typicode.github.io/husky

Husky 安裝有 自動(dòng)安裝手動(dòng)安裝 兩種方式 。

官方推薦自動(dòng)安裝的方式,使用 husky-init 命令一次性完成依賴自動(dòng)安裝和配置

npx husky-init && npm install

自動(dòng)生成的 .husky 目錄和指令:

Lint-staged

lint-staged 是一個(gè)在 git add 到暫存區(qū)的文件運(yùn)行 linters (ESLint/Prettier/StyleLint) 的工具,避免在 git commit 提交時(shí)在整個(gè)項(xiàng)目執(zhí)行。

官方網(wǎng)站:https://github.com/okonet/lint-staged

Lint-staged 安裝

npm install -D lint-staged

Lint-staged 配置

檢測(cè)/格式化配置

package.json 中添加不同文件在 git 提交執(zhí)行的 lint 檢測(cè)配置

"lint-staged": {
    "*.{js,ts}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{cjs,json}": [
      "prettier --write"
    ],
    "*.{vue,html}": [
      "eslint --fix",
      "prettier --write",
      "stylelint --fix"
    ],
    "*.{scss,css}": [
      "stylelint --fix",
      "prettier --write"
    ],
    "*.md": [
      "prettier --write"
    ]
  }

添加 lint-staged 指令

package.json 的 scripts 添加 lint-staged 指令

  "scripts": {
    "lint:lint-staged": "lint-staged"
  }

修改提交前鉤子命令

根目錄 .husky 目錄下 pre-commit 文件中的 npm test 修改為 npm run lint:lint-staged

#npm test
npm run lint:lint-staged

Git 提交代碼檢測(cè)

Commitlint

Commitlint 檢查您的提交消息是否符合 Conventional commit format。-- Commitlint 官網(wǎng)

Commitlint 安裝

參考 官方安裝文檔

npm install -D @commitlint/cli @commitlint/config-conventional

Commitlint 配置

根目錄創(chuàng)建 commitlint.config.cjs 配置文件,示例配置: @commitlint/config-conventional

module.exports = {
  // 繼承的規(guī)則
  extends: ["@commitlint/config-conventional"],
  // @see: https://commitlint.js.org/#/reference-rules
  rules: {
    "subject-case": [0], // subject大小寫不做校驗(yàn)

    // 類型枚舉,git提交type必須是以下類型
    "type-enum": [
      2,
      "always",
      [
    'feat', // 新增功能
        'fix', // 修復(fù)缺陷
        'docs', // 文檔變更
        'style', // 代碼格式(不影響功能,例如空格、分號(hào)等格式修正)
        'refactor', // 代碼重構(gòu)(不包括 bug 修復(fù)、功能新增)
        'perf', // 性能優(yōu)化
        'test', // 添加疏漏測(cè)試或已有測(cè)試改動(dòng)
        'build', // 構(gòu)建流程、外部依賴變更(如升級(jí) npm 包、修改 webpack 配置等)
        'ci', // 修改 CI 配置、腳本
        'revert', // 回滾 commit
        'chore', // 對(duì)構(gòu)建過程或輔助工具和庫(kù)的更改(不影響源文件、測(cè)試用例)
      ],
    ],
  },
};

添加提交信息校驗(yàn)鉤子

執(zhí)行下面命令生成 commint-msg 鉤子用于 git 提交信息校驗(yàn),命令來自:@commitlint/README.md

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

生成的配置如下:

Commitlint 驗(yàn)證

正確的提交格式:<type>(<scope>): <subject> ,type 和 subject 默認(rèn)必填

不規(guī)范的 commit msg,提交失敗 規(guī)范的 commit msg,提交成功

Commitizen & cz-git

  • commitizen: 基于Node.js的 git commit 命令行工具,輔助生成標(biāo)準(zhǔn)化規(guī)范化的 commit message。--官方文檔
  • cz-git: 一款工程性更強(qiáng),輕量級(jí),高度自定義,標(biāo)準(zhǔn)輸出格式的 commitizen 適配器。--官方文檔

Commitizen & cz-git 安裝

npm install -D commitizen cz-git

cz-git 配置

修改 package.json 指定使用的適配器

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

cz-git 與 commitlint 進(jìn)行聯(lián)動(dòng)給予校驗(yàn)信息,所以可以編寫于 commitlint 配置文件之中(? 配置模板)。

// commitlint.config.cjs
module.exports = {
  rule: {
    ...
  },
  prompt: {
  messages: {
      type: '選擇你要提交的類型 :',
      scope: '選擇一個(gè)提交范圍(可選):',
      customScope: '請(qǐng)輸入自定義的提交范圍 :',
      subject: '填寫簡(jiǎn)短精煉的變更描述 :\n',
      body: '填寫更加詳細(xì)的變更描述(可選)。使用 "|" 換行 :\n',
      breaking: '列舉非兼容性重大的變更(可選)。使用 "|" 換行 :\n',
      footerPrefixesSelect: '選擇關(guān)聯(lián)issue前綴(可選):',
      customFooterPrefix: '輸入自定義issue前綴 :',
      footer: '列舉關(guān)聯(lián)issue (可選) 例如: #31, #I3244 :\n',
      generatingByAI: '正在通過 AI 生成你的提交簡(jiǎn)短描述...',
      generatedSelectByAI: '選擇一個(gè) AI 生成的簡(jiǎn)短描述:',
      confirmCommit: '是否提交或修改commit ?',
    },
    // prettier-ignore
    types: [
      { value: "feat",     name: "特性:     ?  新增功能", emoji: ":sparkles:" },
      { value: "fix",      name: "修復(fù):     ??  修復(fù)缺陷", emoji: ":bug:" },
      { value: "docs",     name: "文檔:     ??  文檔變更", emoji: ":memo:" },
      { value: "style",    name: "格式:     ??  代碼格式(不影響功能,例如空格、分號(hào)等格式修正)", emoji: ":lipstick:" },
      { value: "refactor", name: "重構(gòu):     ??  代碼重構(gòu)(不包括 bug 修復(fù)、功能新增)", emoji: ":recycle:" },
      { value: "perf",     name: "性能:     ??  性能優(yōu)化", emoji: ":zap:" },
      { value: "test",     name: "測(cè)試:     ?  添加疏漏測(cè)試或已有測(cè)試改動(dòng)", emoji: ":white_check_mark:"},
      { value: "build",    name: "構(gòu)建:     ???  構(gòu)建流程、外部依賴變更(如升級(jí) npm 包、修改 vite 配置等)", emoji: ":package:"},
      { value: "ci",       name: "集成:     ??  修改 CI 配置、腳本",  emoji: ":ferris_wheel:"},
      { value: "revert",   name: "回退:     ??  回滾 commit",emoji: ":rewind:"},
      { value: "chore",    name: "其他:     ??  對(duì)構(gòu)建過程或輔助工具和庫(kù)的更改(不影響源文件、測(cè)試用例)", emoji: ":hammer:"},
    ],
    useEmoji: true,
    emojiAlign: 'center',
    useAI: false,
    aiNumber: 1,
    themeColorCode: '',
    scopes: [],
    allowCustomScopes: true,
    allowEmptyScopes: true,
    customScopesAlign: 'bottom',
    customScopesAlias: 'custom',
    emptyScopesAlias: 'empty',
    upperCaseSubject: false,
    markBreakingChangeMode: false,
    allowBreakingChanges: ['feat', 'fix'],
    breaklineNumber: 100,
    breaklineChar: '|',
    skipQuestions: [],
    issuePrefixes: [{ value: 'closed', name: 'closed:   ISSUES has been processed' }],
    customIssuePrefixAlign: 'top',
    emptyIssuePrefixAlias: 'skip',
    customIssuePrefixAlias: 'custom',
    allowCustomIssuePrefix: true,
    allowEmptyIssuePrefix: true,
    confirmColorize: true,
    maxHeaderLength: Infinity,
    maxSubjectLength: Infinity,
    minSubjectLength: 0,
    scopeOverrides: undefined,
    defaultBody: '',
    defaultIssues: '',
    defaultScope: '',
    defaultSubject: '',
  }
}

添加提交指令

package.json 添加 commit 指令

 "scripts": {
     "commit": "git-cz"
 }

cz-git 驗(yàn)證

執(zhí)行 commit 指令進(jìn)行代碼提交流程,執(zhí)行前需將改動(dòng)的文件通過 git add 添加到暫存區(qū)

npm run commit

執(zhí)行命令之后會(huì)出現(xiàn)詢問交互

根據(jù)提示一步步的完善 commit msg 信息

commit 之后 git push 推送到遠(yuǎn)程倉(cāng)庫(kù)看到提交信息效果如下:

項(xiàng)目源碼

完整項(xiàng)目源碼地址如下,如果有相關(guān)問題可以通過項(xiàng)目 關(guān)于我們 添加交流群。文章來源地址http://www.zghlxwxcb.cn/news/detail-416413.html

Gitee Github
倉(cāng)庫(kù)地址 vue3-element-admin vue3-element-admin

到了這里,關(guān)于【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交規(guī)范的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【vue3-element-admin 】基于 Vue3 + Vite4 + TypeScript + Element-Plus 從0到1搭建后臺(tái)管理系統(tǒng)(前后端開源@有來開源組織)

    【vue3-element-admin 】基于 Vue3 + Vite4 + TypeScript + Element-Plus 從0到1搭建后臺(tái)管理系統(tǒng)(前后端開源@有來開源組織)

    vue3-element-admin 是基于 vue-element-admin 升級(jí)的 Vue3 + Element Plus 版本的后臺(tái)管理前端解決方案,技術(shù)棧為 Vue3 + Vite4 + TypeScript + Element Plus + Pinia + Vue Router 等當(dāng)前主流框架。 相較于其他管理前端框架,vue3-element-admin 的優(yōu)勢(shì)在于 一有一無 ( 有 配套后端、 無 復(fù)雜封裝): 配套完整 J

    2023年04月21日
    瀏覽(98)
  • 【vue3-element-admin 】基于 Vue3 + Vite4 + TypeScript5+ Element-Plus 從0到1搭建企業(yè)級(jí)后臺(tái)管理系統(tǒng)(前后端開源)

    【vue3-element-admin 】基于 Vue3 + Vite4 + TypeScript5+ Element-Plus 從0到1搭建企業(yè)級(jí)后臺(tái)管理系統(tǒng)(前后端開源)

    vue3-element-admin 是基于 vue-element-admin 升級(jí)的 Vue3 + Element Plus 版本的后臺(tái)管理前端解決方案,技術(shù)棧為 Vue3 + Vite4 + TypeScript + Element Plus + Pinia + Vue Router 等當(dāng)前主流框架。 相較于其他管理前端框架,vue3-element-admin 的優(yōu)勢(shì)在于 一有一無 (有配套后端、無復(fù)雜封裝): 配套完整 Java 后

    2024年02月07日
    瀏覽(99)
  • 前端工程化配置-husky + eslint + lint-staged

    前端工程化配置-husky + eslint + lint-staged

    配置步驟如下: 1、下包 npm i eslint -D 或者 yarn add ?eslint 2、配置 ESlint npx eslint --init 然后根據(jù)彈出的內(nèi)容區(qū)選擇你需要的規(guī)范。 1、 你想怎么使用ESLint? 2、 你的項(xiàng)目使用哪個(gè)規(guī)范? 3、你的項(xiàng)目使用哪個(gè)框架開發(fā)? 4、你的項(xiàng)目使用 TypeScript 了嗎? ? 5、你的代碼在哪里運(yùn)行

    2023年04月09日
    瀏覽(19)
  • 代碼規(guī)范 & 詳細(xì)解釋 husky、prettier、eslint、lint-staged 的作用和使用

    代碼規(guī)范 & 詳細(xì)解釋 husky、prettier、eslint、lint-staged 的作用和使用

    使用 vscode 新建一個(gè)項(xiàng)目(比如叫 my-project) 初始化 git 倉(cāng)庫(kù)( git init ) 初始化 package.json ( npm init -y ) 新建 src/main.js 項(xiàng)目結(jié)構(gòu)如圖 .git 目錄沒有出現(xiàn)在 vscode 編輯器中是正常的。 在介紹 husky 之前,首先要理解什么是 hook(鉤子),在前端 Vue 框架中提供了 beforCreated、created、

    2024年02月03日
    瀏覽(22)
  • 【章節(jié)1】git commit規(guī)范 + husky + lint-staged實(shí)現(xiàn)commit的時(shí)候格式化代碼

    【章節(jié)1】git commit規(guī)范 + husky + lint-staged實(shí)現(xiàn)commit的時(shí)候格式化代碼

    創(chuàng)建項(xiàng)目我們不多說,可以選擇默認(rèn)的,也可以用你們現(xiàn)有的項(xiàng)目。注意章節(jié)1和章節(jié)2請(qǐng)一起看! 章節(jié)1: commit規(guī)范+ husky + lint-staged格式化代碼 章節(jié)2: husky + 檢測(cè)是否有未解決的沖突 + 預(yù)檢查debugger + 自動(dòng)檢查是否符合commit規(guī)范 前言: git commit 的時(shí)候總有人填寫一堆花里胡哨亂

    2024年02月08日
    瀏覽(89)
  • 代碼約束(ESlint\prettier\husky\lint-staged\commitlint)

    代碼約束(ESlint\prettier\husky\lint-staged\commitlint)

    JavaScript 是一個(gè)動(dòng)態(tài)的弱類型語言,在開發(fā)中比較容易出錯(cuò)。因?yàn)闆]有編譯程序,為了尋找 JavaScrip 代碼錯(cuò)誤通常需要在執(zhí)行過程中不斷調(diào)試。像 ESLint 可以讓程序員在編碼的過程中發(fā)現(xiàn)問題而不是在執(zhí)行過程中,幫助我們提高開發(fā)效率。 提高代碼整體的可讀性、可維護(hù)性、可

    2024年04月08日
    瀏覽(20)
  • vite+vue3+ts+eslint+prettier+husky+lint-stated 項(xiàng)目搭建

    項(xiàng)目搭建 創(chuàng)建初始項(xiàng)目 Node.js 版本 14.18+,16+ npm create vite@latest my-vue-app --template vue-ts 添加eslint eslint 初始化 npm init @eslint/config eslint初始化腳本,按自己的要求選擇相應(yīng)的eslint 配置,以下是我選擇的配置項(xiàng) ? How would you like to use ESLint? · style ? What type of modules does your project

    2024年02月08日
    瀏覽(30)
  • Vue-element-admin項(xiàng)目中完全移除ES lint

    由于不需要用到eslint,因此需要完全移除此插件,過程如下: 在項(xiàng)目根目錄下,執(zhí)行以下命令,卸載與 ESLint 相關(guān)的依賴包: npm uninstall @vue/cli-plugin-eslint lint-staged husky eslint babel-eslint eslint-config-standard eslint-friendly-formatter eslint-loader eslint-plugin-html eslint-plugin-promise eslint-plugin-s

    2024年02月07日
    瀏覽(32)
  • Cannot find module lint-staged 解決辦法

    使用git lint-stag后,再commit時(shí)報(bào)錯(cuò) Cannot find module lint-staged 重新npm install和npm install lint-stag都不生效,最后把 node_modules刪掉 ,再重新 npm install 就好用啦!

    2024年02月16日
    瀏覽(19)
  • 企業(yè)級(jí)通用低代碼開發(fā)平臺(tái)——一二三應(yīng)用開發(fā)平臺(tái)發(fā)布1.0開源版本,前端vue3+element plus,框架vue-element-plus-admin,后端ssm+MybtaisPlus

    企業(yè)級(jí)通用低代碼開發(fā)平臺(tái)——一二三應(yīng)用開發(fā)平臺(tái)發(fā)布1.0開源版本,前端vue3+element plus,框架vue-element-plus-admin,后端ssm+MybtaisPlus

    早些時(shí)候,也就是三月初的時(shí)候,定了一個(gè)長(zhǎng)期計(jì)劃,即再啟程,研發(fā)應(yīng)用開發(fā)平臺(tái)(詳見本專欄第一篇https://blog.csdn.net/seawaving/article/details/129334330)。 經(jīng)過大概兩個(gè)月的努力,低代碼配置功能部分完成了雛形,并使用配置功能,將系統(tǒng)管理模塊實(shí)現(xiàn)出來了,相當(dāng)于進(jìn)行了初

    2024年02月05日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包