ESLint+Prettier+Husky+Lint-staged配置

ESLint+Prettier

1. 引入 ESLint

ESLint 是 JavaScript 和 TypeScript 項目的標準代碼檢查工具。

安裝 ESLint
npm install eslint --save-dev
配置文件示例

.eslintrc.js 文件的 Vue 項目配置示例:

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: ['plugin:vue/essential', 'eslint:recommended', 'plugin:prettier/recommended'],
  parserOptions: {
    parser: '@babel/eslint-parser',
  },
  rules: {
    // 自定義規(guī)則
    'vue/multi-word-component-names': 'off', // vue組件name無需用橫杠連接
    'no-unused-vars': ['error', { argsIgnorePattern: '^_' }], // 關(guān)閉未使用變量規(guī)則
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
  },
}

2. 引入 Prettier

Prettier 是一款代碼格式化工具剪撬,可以與 ESLint 配合使用试和。

安裝 Prettier
npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev
配置 Prettier

新增 .prettierrc 文件,設置格式化規(guī)則:

module.exports = {
  // 一行最多 120 字符
  printWidth: 120,
  // 使用 4 個空格縮進
  tabWidth: 2,
  // 不使用 tab 縮進驹吮,而使用空格
  useTabs: false,
  // 行尾需要有分號
  semi: false,
  // 使用單引號代替雙引號
  singleQuote: true,
  // 對象的 key 僅在必要時用引號
  quoteProps: 'as-needed',
  // jsx 不使用單引號,而使用雙引號
  jsxSingleQuote: false,
  // 末尾使用逗號
  trailingComma: 'all',
  // 大括號內(nèi)的首尾需要空格 { foo: bar }
  bracketSpacing: true,
  // jsx 標簽的反尖括號需要換行
  jsxBracketSameLine: false,
  // 箭頭函數(shù),只有一個參數(shù)的時候产禾,也需要括號
  arrowParens: 'always',
  // 每個文件格式化的范圍是文件的全部內(nèi)容
  rangeStart: 0,
  rangeEnd: Infinity,
  // 不需要寫文件開頭的 @prettier
  requirePragma: false,
  // 不需要自動在文件開頭插入 @prettier
  insertPragma: false,
  // 使用默認的折行標準
  proseWrap: 'preserve',
  // 根據(jù)顯示樣式?jīng)Q定 html 要不要折行
  htmlWhitespaceSensitivity: 'css',
  // 換行符使用 lf
  endOfLine: 'auto',
  // 強制元素屬性換行
  singleAttributePerLine: false,
}

3. 安裝和配置 Lint-Staged + Husky

這些工具可以在提交代碼前進行自動校驗明棍。

安裝依賴
npm install lint-staged husky --save-dev
初始化 Husky

運行以下命令乡革,初始化 Husky 并創(chuàng)建 .husky 目錄:

npx husky-init
配置 Git 鉤子
  1. 添加 pre-commit 鉤子
    通過以下命令添加一個 pre-commit 鉤子,用于在提交之前運行特定腳本:
npx husky add .husky/pre-commit "npm test"

該命令會在.husky目錄下生成一個名為pre-commit的文件摊腋,內(nèi)容如下:

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

npx test

npm test用于集成測試和單元測試

2.在 package.json 文件中添加以下內(nèi)容:

{
"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.js": "eslint --fix",
    "*.ts": "eslint --fix",
    "*.vue": "eslint --fix",
    "*.json": "prettier --write",
    "*.css": "prettier --write"
  }
}

3.將 lint-staged 集成到 pre-commit 鉤子中:

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

注意:在執(zhí)行上述命令時沸版,終端提示:

husky - add command is DEPRECATED

導致pre-commit文件中并未添加npx lint - staged,故手動添加該內(nèi)容

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

npx lint-staged
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兴蒸,一起剝皮案震驚了整個濱河市视粮,隨后出現(xiàn)的幾起案子橙凳,更是在濱河造成了極大的恐慌,老刑警劉巖岛啸,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異值戳,居然都是意外死亡,警方通過查閱死者的電腦和手機堕虹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赴捞,“玉大人逼裆,你說我怎么就攤上這事赦政∫” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵财破,是天一觀的道長。 經(jīng)常有香客問我从诲,道長,這世上最難降的妖魔是什么系洛? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任俊性,我火速辦了婚禮,結(jié)果婚禮上描扯,老公的妹妹穿的比我還像新娘定页。我一直安慰自己,他們只是感情好绽诚,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布典徊。 她就那樣靜靜地躺著,像睡著了一般憔购。 火紅的嫁衣襯著肌膚如雪宫峦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天玫鸟,我揣著相機與錄音,去河邊找鬼犀勒。 笑死屎飘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的贾费。 我是一名探鬼主播钦购,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褂萧!你這毒婦竟也來了押桃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤导犹,失蹤者是張志新(化名)和其女友劉穎唱凯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谎痢,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡磕昼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了节猿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片票从。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出峰鄙,到底是詐尸還是另有隱情浸间,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布吟榴,位于F島的核電站魁蒜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏煤墙。R本人自食惡果不足惜梅惯,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仿野。 院中可真熱鬧铣减,春花似錦、人聲如沸脚作。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽球涛。三九已至劣针,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亿扁,已是汗流浹背捺典。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工襟己, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牍陌,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓贮预,卻偏偏與公主長得像契讲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子怀泊,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容