精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

項(xiàng)目中使用Husky 格式化代碼和校驗(yàn) Commit 信息

開發(fā) 前端
Husky 是一個(gè)很有用的工具,能夠利用 Git hook 在本地 Commit 時(shí),配合 eslint 等 Linter 工具做文件的格式化,并配合Commitlint 校驗(yàn) commit 信息格式,是工程化統(tǒng)一代碼風(fēng)格的一大利器。

大家好,我是前端西瓜哥。今天我們學(xué)習(xí)使用 husky 工具,在 commit 的時(shí)候做一些風(fēng)格的校驗(yàn)工作,包括 commit 信息格式化和文件格式化。

git hook 和 husky

git hook 讓我們可以在 git 執(zhí)行一些行為的前后時(shí)機(jī),執(zhí)行一些腳本。

比如 pre-commit? ,能夠在我們真正提交 commit 之前先執(zhí)行一段代碼,如果這段代碼報(bào)錯(cuò)(exit 1),提交會(huì)被取消;如果正常執(zhí)行,commit 會(huì)被真正提交。

或是 commit-msg,也能在真正 commit 前拿到 commit 信息內(nèi)容,去做一些檢驗(yàn)工作。

利用 git hook 的能力,我們就可以在 commit 前做一些風(fēng)格檢驗(yàn)或格式化,比如 ESLint、Prettier、commit 格式等。

git hook 是 sh 腳本,在項(xiàng)目 .git/hooks 目錄下。這有一個(gè)比較尷尬的問題:.git 下的文件是不會(huì)被 git 提交的。husky 就是解決這個(gè)問題的一個(gè)方案。

實(shí)際上 git 2.9 之后,我們可以通過配置 git 的 core.hookspath 來(lái)指定 hook 目錄為相當(dāng)項(xiàng)目下的目錄,理論上可以不用 husky。

但 husky 還是算是做了一層封裝,可以更好地操作 hook,比如通過命令行快速生成 hook,并將其設(shè)置為可執(zhí)行。

husky 4 及以前使用的是 .huskyrc 來(lái)進(jìn)行配置。那時(shí)候設(shè)計(jì)上有一些問題,就是沒有配置的 hook 也會(huì)觸發(fā)鉤子執(zhí)行。于是在 husky 4 做了破壞性的修改。使用方法變成了在 .husky 目錄下直接加鉤子腳本。

husky 安裝和啟用

不講解 husky 4 及其以前版本的使用,因?yàn)橐呀?jīng)過時(shí)了。

首先是安裝:

yarn add -D husky
# 或用 npm
npm install husky --save-dev

然后執(zhí)行 husky 命令行工具,啟用 git hook:

npx husky install

該命令會(huì)創(chuàng)建一個(gè) .husky 目錄。

.husky
└── _
├── .gitignore
└── husky.sh

同時(shí),該命令還將 git 所在項(xiàng)目本地環(huán)境的 core.hookspath? 設(shè)置為 .husky?。所以,這個(gè) .husky 目錄就是我們放 git hook 腳本的地方。

我們執(zhí)行下面命令,可以看到當(dāng)前 git 項(xiàng)目的本地配置有:core.hookspath=.husky。

git config --local --list

其他同事拉取項(xiàng)目時(shí),他們可能會(huì)忘記執(zhí)行上面的命令啟用 git hook。但有一個(gè)命令他們是一定會(huì)執(zhí)行的,就是執(zhí)行 npm install? 或 yarn 去安裝依賴。

于是我們需要利用 npm script 的生命周期腳本,加上一個(gè) prepare。prepare 會(huì)在 install 之后執(zhí)行。

// package.json
{
"scripts": {
// ...
"prepare": "husky install"
}
}

這樣就能保證新同事拉項(xiàng)目并安裝依賴后,husky 被啟用。

創(chuàng)建 hook

npx husky add .husky/pre-commit "npm test"

該命令會(huì)給你在 .husky 下創(chuàng)建一個(gè) pre-commit 腳本,并填充 npm test 內(nèi)容,這樣我們就能在 commit 前先過一過測(cè)試用例。

這個(gè)腳本會(huì)自動(dòng)設(shè)置為可執(zhí)行。

如果你是手動(dòng)創(chuàng)建的,你需要手動(dòng)使用 chmod u+x pre-commit 命令將該文件設(shè)置為可執(zhí)行文件。否則鉤子腳本是不會(huì)執(zhí)行的。

創(chuàng)建的腳本內(nèi)容為:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npm test

它會(huì)在真正 commit 前執(zhí)行 npm test,如果報(bào)錯(cuò)就會(huì)中止 commit。

實(shí)戰(zhàn):使用 commitlint 校驗(yàn) commit 信息格式

我們希望在提交 commit 時(shí),能夠檢驗(yàn) commit 信息,如果不對(duì)就不允許提交。這樣能防止開發(fā)人員提交一些雜亂、無(wú)法理解或不統(tǒng)一的信息。

這種情況下需要用到 commit-msg 鉤子,我們先創(chuàng)建一個(gè)沒有內(nèi)容的 commit-msg。

npx husky add .husky/commit-msg ""

?在 commit-msg 腳本中,我們可以通過 $1? 拿到提交信息。$1? 指向的是 .git/COMMIT_EDITMSG 文件,該文件保存著最后一次提交的 commit 信息。

可以拿到 commit 信息,那我們就可以在上面做一些校驗(yàn)工作,比如看是否符合 feat: xxx 的格式。這里有個(gè)問題,就是我們需要自己去聲明一些規(guī)范,并且要自己去實(shí)現(xiàn)代碼。

那,我們?nèi)フ逸喿樱喿诱业搅耍褪?commitlint。commitlint 是一個(gè)命令行工具,能夠做 commit 的校驗(yàn),并提供了官方的校驗(yàn)規(guī)則,此外也支持你自己配置規(guī)則。

先安裝 commitlint:

yarn add -D @commitlint/cli @commitlint/config-conventional

然后創(chuàng)建 commitlint.config.js? 配置文件,并添加內(nèi)容,使用 @commitlint/config-conventional 。

module.exports = {
extends: ["@commitlint/config-conventional"],
};

@commitlint/config-conventional?  是一個(gè)經(jīng)典的 commit 規(guī)范,我們需要用類似 feat: add util.js? 或 fix: fix wrong text 這樣的格式,具體文檔見:

https://www.conventionalcommits.org/en/v1.0.0/。

然后我們?cè)?commit-msg 鉤子上加上:

npx --no -- commitlint --edit $1

  • npx --no :表示只使用本地項(xiàng)目 node_modules 下的腳本,不允許找不到的時(shí)候嘗試去下載。下載耗費(fèi)時(shí)間,所以要取消,你要確保已經(jīng)把命令行工具下載好。
  • commitment --edit <文件名>?:執(zhí)行 commitment 命令行工具,并使用--edit? 選項(xiàng),從一個(gè)文件里提取 commit 內(nèi)容來(lái)進(jìn)行校驗(yàn)。校驗(yàn)規(guī)則由前面說(shuō)的commitlint.config.js 配置文件來(lái)指定。

配置后,我們測(cè)試下,先提交不規(guī)范的 commit:

圖片

加上開頭的 commit 類別 type,再提交,成功了:

圖片

實(shí)戰(zhàn):使用 lint-staged 格式化要暫存區(qū)的文件

lint-staged 是一個(gè)命令行工具,它能夠?qū)?git 的 staged(暫存區(qū))中的文件使用 linter 工具格式化,修復(fù)一些風(fēng)格問題,并再次添加到 staged 上。

一個(gè)經(jīng)典的搭配是,配合 husky 的 pre-commit 鉤子將文件 格式化后再提交。pre-commit 在真正 commit 前觸發(fā),配合上 lint-staged,就能做一些風(fēng)格的修正。

使用 lint-staged 強(qiáng)制提交的文件做格式化適用的場(chǎng)景:

  1. 一些團(tuán)隊(duì)成員使用的編輯器沒有或未安裝格式化插件,代碼不能在保存后自動(dòng)格式化,容易提交風(fēng)格錯(cuò)誤的代碼;
  2. 項(xiàng)目開發(fā)了一段時(shí)間才引入了代碼風(fēng)格規(guī)范,希望一點(diǎn)點(diǎn)修正。如果一次性全部格式化,可能會(huì)有不少需要手動(dòng)修復(fù)的風(fēng)格;

下面我們開始配置。

首先我們安裝 lint-staged:

yarn add -D lint-staged

然后新增 pre-commit 鉤子,內(nèi)容為 npx lint-staged:

npx husky add .husky/pre-commit "npx lint-staged"

因?yàn)樘峤坏奈募卸喾N類型,比如 js、md、less、mdx 等。所以我們還需要配置一下,針對(duì)不同類型文件使用不同的 linter。

lint-commit 的配置可以放到 package.json,也可以放到專門的配置文件里。我選擇后者,在項(xiàng)目根目錄創(chuàng)建一個(gè) .lintstagedrc.js 文件,然后加上以下內(nèi)容:

module.exports = {
"src/**/*.{js,jsx,ts,tsx}": "eslint --fix",
};

這里表示指定在 src 目錄下 js、jsx、ts、tsx 后綴文件,使用 eslint 做格式化。我只使用 eslint 做 js 和 ts 的格式化,其他的就不管了,你可以考慮用過 prettier 格式化它們。

這里有一個(gè) Github 可以參考,地址為:

https://github.com/F-star/xigua-ui。

結(jié)尾

husky 是一個(gè)很有用的工具,能夠利用 git hook 在本地 commit 時(shí),配合 eslint 等 linter 工具做文件的格式化,并配合 commitlint 校驗(yàn) commit 信息格式,是工程化統(tǒng)一代碼風(fēng)格的一大利器。

責(zé)任編輯:姜華 來(lái)源: 前端西瓜哥
相關(guān)推薦

2011-09-13 18:09:15

Eclipse And

2010-08-03 10:46:41

Flex代碼格式化

2011-03-07 15:01:42

MySQLXML數(shù)據(jù)

2009-06-24 17:34:58

使用JSF的經(jīng)驗(yàn)

2010-07-29 11:03:53

Flex代碼格式化

2015-01-07 15:21:30

Android Stu代碼格式化

2023-11-30 09:00:00

TypeScript開發(fā)

2022-05-17 07:54:40

代碼前端格式化

2019-05-17 13:20:57

Black格式化工具Python

2017-07-04 19:02:17

ReacRedux 項(xiàng)目

2010-08-10 13:35:26

Flex代碼格式化

2020-09-02 07:19:41

printf 格式化輸出Unix

2009-06-05 15:27:23

Eclipse工具格式化模板應(yīng)用

2021-04-14 07:35:12

Json格式化日期

2009-09-04 13:19:59

C#代碼格式化

2022-03-10 10:24:45

Vim代碼Linux

2018-05-02 09:18:17

Linux技巧嵌入式

2021-08-23 10:40:30

人工智能KubernetesAI

2020-11-03 10:21:33

MySQL

2022-06-26 08:39:19

Spring容器字段格式化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产乱码字幕精品高清av| 日韩理论在线| 色综合欧美在线视频区| 亚洲欧洲精品一区二区| av免费在线观看不卡| 99视频一区| 在线电影欧美日韩一区二区私密| 超碰91在线播放| 日韩电影毛片| 亚洲欧美自拍偷拍| 久久人人九九| www.97超碰| 日韩在线一区二区三区| 九九热这里只有精品免费看| 扒开jk护士狂揉免费| www.成人| 一本大道久久a久久精品综合| 亚洲欧洲国产日韩精品| 亚洲欧美日韩成人在线| 精久久久久久久久久久| 欧美亚洲成人免费| 亚洲国产精品免费在线观看| 综合色就爱涩涩涩综合婷婷| 日韩视频免费观看高清在线视频| 可以在线看的黄色网址| 国内小视频在线看| 专区另类欧美日韩| 欧美激情第六页| 午夜精品在线播放| 蜜桃视频一区二区三区| 欧美在线观看一区二区三区| 妺妺窝人体色www在线下载| 操欧美老女人| 亚洲精品视频播放| 国产精品成人99一区无码| 日本一区二区三区中文字幕| 日本韩国欧美国产| 五十路熟女丰满大屁股| 51xtv成人影院| 国产精品美女久久福利网站| 日韩高清三级| 青青草视频免费在线观看| 国产.欧美.日韩| 51国偷自产一区二区三区| 一区二区视频网站| 天堂影院一区二区| 51色欧美片视频在线观看| 国产精品第108页| 激情欧美一区二区三区| 色综合视频网站| 侵犯稚嫩小箩莉h文系列小说| 日本道不卡免费一区| 亚洲天堂av在线免费| 一本色道久久综合亚洲精品图片 | 亚洲午夜久久久久| 麻豆视频传媒入口| caoporn免费在线视频| 亚洲素人一区二区| 特色特色大片在线| av在线麻豆| 亚洲一区二区三区四区五区黄 | 国产高清一区二区三区| 午夜老司机福利| 成人av网站免费| 国产精品美女诱惑| 午夜性色福利影院| 久久精品一区蜜桃臀影院| 欧洲精品久久| 在线观看av的网站| 亚洲欧美一区二区三区极速播放 | 性国产高清在线观看| 亚洲黄色小说网站| 国产96在线 | 亚洲| 人成在线免费网站| 欧美中文字幕一区二区三区| 亚洲免费一级视频| 国产精一区二区| 欧美成人a在线| 成人在线视频免费播放| 美日韩中文字幕| 中文字幕av一区二区| 黄色香蕉视频在线观看| 在线播放精品| 国产精品吊钟奶在线| 国产精品人人爽| 不卡一二三区首页| 日日夜夜精品网站| 91精品久久| 日韩欧美在线字幕| 国产成人美女视频| 国产乱人伦丫前精品视频| 亚洲性视频网址| 日韩精品一区二区亚洲av性色| 亚洲福利国产| 国产欧美中文字幕| 天天操天天干天天爱| 国产欧美精品一区二区色综合 | gogo久久| 欧美午夜精品久久久| gogo亚洲国模私拍人体| 亚洲电影男人天堂| 欧美大尺度在线观看| 天天干天天干天天| 国产剧情一区二区三区| 免费看成人av| a视频在线免费看| 日本韩国一区二区三区| 亚洲AV成人精品| 日本电影一区二区| 91av视频在线| 国产av无码专区亚洲av麻豆| 久久久久久一二三区| 91传媒免费视频| 国产91欧美| 亚洲乱码国产乱码精品精天堂| 精品国产欧美日韩不卡在线观看| 丝袜a∨在线一区二区三区不卡| **亚洲第一综合导航网站| 极品美乳网红视频免费在线观看 | 国产性生活免费视频| 成人做爰免费视频免费看| 亚洲精品福利在线观看| www.99re7| 紧缚奴在线一区二区三区| 欧美lavv| 桃色av一区二区| 亚洲精品在线一区二区| 日韩av手机在线免费观看| 日韩国产精品久久| 久久综合九色综合网站| av人人综合网| 精品国产露脸精彩对白| 午夜激情福利网| 蜜臀av一级做a爰片久久| 免费国产在线精品一区二区三区| 2001个疯子在线观看| 欧美久久久久久蜜桃| 精品一区二区三区蜜桃在线| 国产麻豆综合| 精品久久久久久综合日本| 第一中文字幕在线| 日韩免费福利电影在线观看| 亚洲 欧美 变态 另类 综合| 日本成人中文字幕在线视频| 日本一区视频在线| 欧美gay囗交囗交| 亚洲精品影视在线观看| 国产又黄又粗又爽| 91在线丨porny丨国产| 水蜜桃色314在线观看| 欧美sss在线视频| 97香蕉久久夜色精品国产| 亚洲色图 校园春色| 污片在线观看一区二区| 国产精品第七页| 亚洲欧美视频一区二区三区| 欧美一区二区视频在线| 国产精品高清乱码在线观看| 中文亚洲视频在线| 一级片aaaa| 亚洲欧美一区二区三区孕妇| 日本少妇一级片| 亚洲第一黄色| 久久香蕉综合色| 日韩中文视频| 久久天天躁日日躁| 亚洲av综合色区无码一区爱av| 亚洲综合图片区| 亚洲国产精品成人综合久久久| 亚洲一区日韩| 亚洲激情啪啪| 日本高清精品| 91精品国产高清久久久久久91 | xnxx国产精品| 欧美黑人又粗又大又爽免费| 99热在线成人| 国产精品久久久久av福利动漫| 日本三级一区| 最近2019中文字幕在线高清| a天堂中文在线观看| 亚洲国产aⅴ天堂久久| 久久精品国产亚洲av麻豆| 蜜桃视频在线一区| 男人天堂av片| 人人狠狠综合久久亚洲婷| 成人性生交大片免费看小说| bl在线肉h视频大尺度| 亚洲全黄一级网站| 国产又粗又猛视频免费| 亚洲国产一区在线观看| 免费成人深夜天涯网站| 国产成a人亚洲| 激情网站五月天| 中文字幕日韩一区二区不卡| 久久久久高清| 国产亚洲高清一区| 日本欧美爱爱爱| 午夜小视频在线观看| 亚洲精品日韩丝袜精品| av片免费播放| 欧美性感一区二区三区| 国产一级片免费观看| 国产精品久久毛片av大全日韩| 国产极品一区二区| 久久精品国产免费| 久久国产成人精品国产成人亚洲| 色呦哟—国产精品| 久久精品五月婷婷| 九九99久久精品在免费线bt| 欧美最猛性xxxxx免费| 色yeye免费人成网站在线观看| 一区二区三区四区视频| 西西人体44www大胆无码| 欧美一级欧美三级| 日批视频免费观看| 精品国产乱码久久久久久天美| 亚洲综合久久av一区二区三区| 91在线观看视频| xxxx视频在线观看| 精品一区二区国语对白| 六月丁香婷婷在线| 日韩一级在线| 国产精品久久久影院| 成人羞羞视频播放网站| 免费在线观看91| 成人精品毛片| 97se在线视频| 99久久这里有精品| 国产精品视频中文字幕91| 人在线成免费视频| 97涩涩爰在线观看亚洲| 亚洲性图自拍| 欧美噜噜久久久xxx| 免费a级在线播放| 色偷偷av亚洲男人的天堂| 国产中文字幕在线观看| 亚洲精品中文字幕女同| 天天干天天爱天天操| 日韩美一区二区三区| 精品黑人一区二区三区国语馆| 欧美日韩一区 二区 三区 久久精品| 日韩中文字幕在线观看视频| 精品久久中文字幕久久av| 亚洲国产精一区二区三区性色| 亚洲免费观看在线视频| 欧美视频www| 亚洲人成在线观看一区二区| 肉色超薄丝袜脚交69xx图片| 国产精品国产自产拍在线| 少妇一级黄色片| 亚洲国产成人午夜在线一区| 黄色av免费播放| 日本一区二区三区视频视频| 国产成人免费观看网站| 日本一区二区高清| 久久久国产一级片| 一色屋精品亚洲香蕉网站| 波多野结衣家庭教师在线观看| 中文一区在线播放| 亚洲少妇xxx| 亚洲精品欧美二区三区中文字幕| 欧美视频一区二区在线| 亚洲精品日韩专区silk| 久久黄色免费视频| 无码av免费一区二区三区试看| 久久精品国产成人av| 色婷婷激情久久| 中文字幕日韩经典| 91精品国产手机| 亚洲毛片欧洲毛片国产一品色| 亚洲第一av在线| 青青草av免费在线观看| 在线精品视频视频中文字幕| 老司机精品影院| 久久人人97超碰精品888| 少妇视频在线观看| 国产精品免费电影| 精品国产伦一区二区三区观看说明| 国产精品久久波多野结衣| 四虎影视精品| 一本久道久久综合狠狠爱亚洲精品| 欧美日韩综合| 91av在线免费播放| 韩国欧美国产1区| 国产高清成人久久| 国产女同性恋一区二区| 曰本女人与公拘交酡| 欧美午夜视频一区二区| 国产又粗又猛又爽又黄的| 精品国产在天天线2019| 激情福利在线| 欧美国产中文字幕| abab456成人免费网址| 懂色中文一区二区三区在线视频| 一区二区小说| 400部精品国偷自产在线观看 | 亚洲美女在线一区| 毛片在线免费视频| 制服丝袜av成人在线看| 视频一区二区三区在线看免费看 | 裸体丰满少妇做受久久99精品| 99久精品视频在线观看视频| 青青草视频在线免费播放| 强制捆绑调教一区二区| 中文字幕影片免费在线观看| 亚洲欧洲三级电影| 色一情一乱一伦| 欧美成人官网二区| 免费av在线| 国产成人福利视频| 高潮按摩久久久久久av免费| 国产又大又长又粗又黄| 久久看片网站| 污片免费在线观看| 亚洲免费观看高清| 这里只有久久精品视频| 亚洲国产精品va在线| 国产黄色在线观看| 国产精品青草久久久久福利99| 欧美jizz19性欧美| 国产一区二区三区乱码| 久久成人精品无人区| x88av在线| 日韩欧美在线视频观看| 午夜国产在线视频| 欧美日本中文字幕| 国产999精品在线观看| 亚洲欧美99| 日韩va欧美va亚洲va久久| 欧美大片免费播放器| 亚洲高清一区二区三区| 精品人妻一区二区三区换脸明星| 在线视频国产日韩| 成人在线视频播放| 欧美另类一区| 丝袜诱惑亚洲看片| 小早川怜子久久精品中文字幕| 欧美性猛交xxxxx免费看| 黄色成人一级片| 久久久久久久久久久久av| 久久9999免费视频| 国产经典久久久| 国产麻豆视频精品| 无码黑人精品一区二区| 777亚洲妇女| 国产三区在线观看| 1卡2卡3卡精品视频| 欧美国产激情| 激情综合激情五月| 亚洲va中文字幕| 日韩av成人| 国产精品高潮呻吟久久av野狼 | 在线观看精品国产视频| 国产经典一区| 亚洲日本无吗高清不卡| 免费成人性网站| 日本免费网站视频| 欧美一区二区三区免费在线看| 怡红院av在线| 国产视色精品亚洲一区二区| 日韩视频免费| 三上悠亚影音先锋| 欧美丝袜丝交足nylons图片| 日本中文字幕在线看| 91九色蝌蚪国产| 国产一区激情| 国产交换配乱淫视频免费| 欧美视频一区二区| huan性巨大欧美| 精品在线不卡| 青青草91视频| 久久香蕉精品视频| 亚洲精品有码在线| 色999久久久精品人人澡69| 欧美美女黄色网| 99久久99精品久久久久久| 日本视频免费观看| 久久精品福利视频| 成人av地址| 又粗又黑又大的吊av| 国产精品免费视频观看| 朝桐光av在线一区二区三区| 国产91精品不卡视频| 四季av一区二区凹凸精品| 午夜影院福利社| 色悠悠亚洲一区二区| 国产最新在线| 狼狼综合久久久久综合网| 久久99国产精品免费| 亚洲日本韩国在线| 色诱女教师一区二区三区| 成人福利一区| 黄色永久免费网站| 亚洲国产欧美在线| av男人的天堂在线| 成人精品一二区| 日韩国产欧美在线播放| 国产精久久久久久| 中文字幕久久亚洲| 欧美在线关看|