husky 沒有生效
安裝了 husky、lint-staged,並且完成配置。配置如圖:
commit 的時候還是沒有效果,沒有去執行lint-staged
原因:husky的新版本和老版本是不一樣的,如上圖的配置,只適用 4.x
因此直接安裝 4.3.8版本的husky即可生效
關於新版本的husky,比老版本多了一個動作。
老版本:安裝 ——> 配置
新版本:安裝 ——> 啟用 ——> 生成 .husky相關配置
步驟:
- npm install husky --save-dev 安裝
- npx husky install 手動啟用husky
- npx husky add .husky/pre-commit "npm run lint-staged" 生成husky配置文件(執行完這一步,根目錄會有一個 .husky目錄)
完成這三步便可以正常使用了(前提是package.json里面的lint-staged已經配置好了)
上面的配置方法有一個問題:我們不可能每次 install 之后都需要手動去啟用husky,如果開發A配置好了並提交,開發B拉下代碼,裝完依賴還需要去手動啟用。
解決這個問題的辦法,在package.json的里面添加如下配置:
"scripts": { "prepare": "husky install" }
它的作用是:在husky安裝完之后,自動關聯啟用。這樣除了開發A需要關心husky配置之外,其他后續的開發人員是不需要關心husky配置的。
husky lint-staged 完整步驟
- npm install husky lint-staged prettier --save-dev
- npx husky install 【啟用】
- "prepare": "husky install" 【install后自動啟用,這個操作一定要做,否則下次新拉代碼還需要手動啟用】
- npx husky add .husky/pre-commit "npm run lint-staged" 【創建一個hook,執行完根目錄回生成一個.husky目錄】
- 繼續在 scripts 里面添加 "lint": "eslint --ext .js,.jsx,.ts,.tsx src", "lint-staged": "lint-staged"
- package.json 里面添加 "lint-staged": { "**/*.{js,jsx,ts,tsx}": "npm run lint", "**/*.{js,jsx,tsx,ts,less,md}": [ "prettier --write" ] }
完成上述操作之后,就可以去試一試了。