項目中使用commitizen+commitlint規(guī)范提交

安裝相關依賴

npm install commitizen cz-customizable @commitlint/cli @commitlint/config-conventional -D

版本號如下:

{
    "@commitlint/cli": "^17.5.0",
    "@commitlint/config-conventional": "^17.4.4",
    "commitizen": "^4.3.0",
    "cz-conventional-changelog": "^3.3.0",
    "cz-customizable": "^7.0.0",
}

cz-conventional-changelog和cz-customizable安裝其中一個即可,當前是安裝cz-customizable來自定義提交信息
在package.json中配置commitizen的目錄

{
   "config": {
    "commitizen": {
      "path": "./node_modules/cz-customizable"
    }
  },

}

新建.cz-config.js文件

module.exports = {
  types: [//描述修改的性質是什么,是bugfix還是feat,在這里進行定義。
    { value: 'feat', name: 'feat??:新功能' },
    { value: 'fix', name: 'fix??: 修復Bug' },
    { value: 'docs', name: 'docs??: 文檔更新' },
    {
      value: 'style',
      name: 'style??: 樣式更新',
    },
    {
      value: 'refactor',
      name: 'refactor??:重構了',
    },
    { value: 'test', name: 'test??:測試代碼' },
  ],
  //定義之后情组,我們就可以通過上下鍵去選擇 scope
  // scopes: [{ name: 'accounts' }, { name: 'admin' }, { name: 'exampleScope' }, { name: 'changeMe' }],

  usePreparedCommit: false, // to re-use commit from ./.git/COMMIT_EDITMSG
  allowTicketNumber: false,
  isTicketNumberRequired: false,
  ticketNumberPrefix: 'TICKET-',
  ticketNumberRegExp: '\\d{1,5}',

  // it needs to match the value for field type. Eg.: 'fix'
  /*針對每一個type去定義scope

  scopeOverrides: {
    fix: [
      {name: 'merge'},
      {name: 'style'},
      {name: 'e2eTest'},
      {name: 'unitTest'}
    ]
  },
  */
  // override the messages, defaults are as follows
  messages: {
    type: "選擇你要提交的類型",
    // scope: '\nDenote the SCOPE of this change (optional):',
    // used if allowCustomScopes is true
    // customScope: 'Denote the SCOPE of this change:',
     subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n',
    // body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
    // breaking: 'List any BREAKING CHANGES (optional):\n',
    // footer: 'List any ISSUES CLOSED by this change (optional). E.g.: #31, #34:\n',
    confirmCommit: 'Are you sure you want to proceed with the commit above?',
  },
  // 設置為 true,在 scope 選擇的時候获枝,會有 empty 和 custom 可以選擇积蜻,顧名思義闯割,選擇 empty 表示 scope 缺省,如果選擇 custom竿拆,則可以自己輸入信息
  allowCustomScopes: true,
  //如上設置為 ['feat', 'fix']宙拉,只有我們type選擇了 feat 或者是 fix,才會詢問我們 breaking message.
  allowBreakingChanges: ['feat', 'fix'],
  // 指定跳過哪些步驟丙笋,例如跳過我們剛剛說的詳細描述谢澈,設置其為 scope: ['body'],假設我們的項目也不會涉及到關聯(lián) issue御板,我們可以設置其為 scope: ['body', 'footer']
  skipQuestions: ['scope','customScope','breaking','footer','body'],

  // 描述的長度限制
  subjectLimit: 100,
  // breaklineChar: '|', // It is supported for fields body and footer.
  // footerPrefix : 'ISSUES CLOSED:'
  // askForBreakingChangeFirst : true, // default is false
};

新建commitlint.config.js

module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    "type-enum": [
      2,
      "always",
      [
        "WIP", // 開發(fā)中
        "feat", // 新特性
        "improvement", // 加強現(xiàn)有特性
        "fix", // 修補bug
        "refactor", // 重構
        "docs", // 文檔
        "test", // 單元測試
        "config", // 配置文件
        "style", // 格式需改
        "perf", // 性能提升
        "ci", // ci
        "revert", // 版本回退
        "chore", // 其他修改
      ],
    ],
    "type-empty": [2, "never"], // type不能為空
    "type-case": [0, "always", "lower-case"], // type不限制大小寫
    "subject-empty": [2, "never"], // subject(簡短得描述)不能為空
    "subject-max-length": [1, "always", 50], // subject最大長度锥忿,超出只會警告,不阻止提交
    "body-leading-blank": [1, "always"],
    "footer-leading-blank": [1, "always"],
    "header-max-length": [2, "always", 72],
  },
};

安裝husky怠肋,安裝了可忽略

npm install husky -D

新建commit-msg文件并寫入hook執(zhí)行命令

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

以上完成在git commit 發(fā)起提交前執(zhí)行commitlint檢查是否符合規(guī)范敬鬓。可使用git cz 命令代替git commit提交代碼

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末笙各,一起剝皮案震驚了整個濱河市钉答,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杈抢,老刑警劉巖数尿,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惶楼,居然都是意外死亡右蹦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門歼捐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫩实,“玉大人,你說我怎么就攤上這事窥岩〖紫祝” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵颂翼,是天一觀的道長晃洒。 經(jīng)常有香客問我,道長朦乏,這世上最難降的妖魔是什么球及? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮呻疹,結果婚禮上吃引,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好镊尺,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布朦佩。 她就那樣靜靜地躺著,像睡著了一般庐氮。 火紅的嫁衣襯著肌膚如雪语稠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天弄砍,我揣著相機與錄音仙畦,去河邊找鬼。 笑死音婶,一個胖子當著我的面吹牛慨畸,可吹牛的內容都是我干的。 我是一名探鬼主播衣式,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼先口,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瞳收?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤厢汹,失蹤者是張志新(化名)和其女友劉穎螟深,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烫葬,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡界弧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搭综。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢箕。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兑巾,靈堂內的尸體忽然破棺而出条获,到底是詐尸還是另有隱情,我是刑警寧澤蒋歌,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布帅掘,位于F島的核電站,受9級特大地震影響堂油,放射性物質發(fā)生泄漏修档。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一府框、第九天 我趴在偏房一處隱蔽的房頂上張望吱窝。 院中可真熱鬧,春花似錦、人聲如沸院峡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撕予。三九已至鲫惶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間实抡,已是汗流浹背欠母。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吆寨,地道東北人赏淌。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像啄清,于是被迫代替她去往敵國和親六水。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容