需求場景
lint就是檢查的代碼,eslint徽鼎,stylelint浮庐,prettier這些東西,想必大家都知道了霎挟;
但是每次commit的時(shí)候都要自己npm run fix 會不會很蛋痛窝剖;
所以,想git commit的時(shí)候自動(dòng)跑完fix酥夭,就需要
husky和lint-stated了
husky
安裝husky
npm install husky --save-dev
// package.json
{
"husky": {
"hooks": {
"pre-commit": "npm test",
"pre-push": "npm test",
"...": "..."
}
}
}
這樣git commit 的時(shí)候就會執(zhí)行npm test了赐纱,但是還是不完美脊奋,如果我們想干很多件事呢,比較吧修改好的放到暫存區(qū)疙描;
那么就需要 lint-stated
lint-stated
安裝 lint-stated
npm install -D lint-staged
然后package.json就可以這樣寫了狂魔;
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.css": [
"stylelint --fix",
"prettier --write",
"git add"
],
"*.scss": [
"stylelint --fix --syntax scss",
"prettier --write",
"git add"
],
"*.{js,jsx}": [
"eslint --fix",
"git add"
]
},
就相當(dāng)于git commit的時(shí)候會自動(dòng)去執(zhí)行l(wèi)int-staged的代碼;
".css"是去匹配css文件淫痰,然后做一些操作;
同理".scss"整份,"*.{js,jsx}"就是去匹配scss文件和js還有jsx文件待错,然后爬改跑的lint;
是不是很完美烈评,很簡單火俄!
git add 就是修改好的,放到暫存區(qū)
延伸
1讲冠、除了可以"pre-commit"以外還可以有很多其他git鉤子操作瓜客,具體可以在.git/hooks目錄下面看這些鉤子名字;
2竿开、出了husky谱仪,還可以用yorkie,就是搞vue那個(gè)老幾否彩,在husky基礎(chǔ)上面改的一個(gè)東西疯攒;反正都差不多;
如果直接用vue的腳手架就可以不用安裝husky列荔,一樣配置就完了敬尺;官方文檔