超實(shí)用的代碼規(guī)范自動(dòng)化配置指南——Eslint+Pretiier+VSCode

一陵究、背景

正如一千個(gè)讀者眼中有一千個(gè)哈姆雷特,在團(tuán)隊(duì)項(xiàng)目開發(fā)中摸航,不同的小伙伴也有極大概率會(huì)有不同的代碼風(fēng)格制跟。比如:末尾用不用分號(hào)?js中使用單引號(hào)or雙引號(hào)酱虎?是否換行凫岖?tab縮進(jìn)還是空格縮進(jìn)?……

單人項(xiàng)目遵循自己的習(xí)慣就好逢净,但團(tuán)隊(duì)項(xiàng)目中哥放,如果各個(gè)文件代碼風(fēng)格不一致,就十分難受了……

關(guān)于團(tuán)隊(duì)代碼規(guī)范爹土,網(wǎng)上早已有了各種解決方案甥雕。本文將默認(rèn)以 VSCode 編輯器為基礎(chǔ),直接給出最最簡(jiǎn)單實(shí)用配置指南胀茵。

關(guān)于 Pretiier+Eslint

不同于 ESLint 這種輔助檢測(cè)代碼是否符合規(guī)范的工具社露,Pretiier只專注于格式化一件事。

預(yù)期效果

  1. 所有文件保存時(shí)自動(dòng)格式化
  2. 批量對(duì)項(xiàng)目已有文件進(jìn)行格式化處理

二琼娘、開始配置

第一步:安裝插件和npm包

安裝eslint包 npm install eslint --save-dev
安裝eslint包 npm install babel-eslint --save-dev
首先安裝 VSCode 的插件 prettier-vscodeEslint

image.png

第二步:編輯器配置

安裝成功后峭弟,在IDE左下角找到設(shè)置按鈕附鸽,點(diǎn)擊進(jìn)入編輯器 setting.json 文件中

image.png

image.png

在這里,我們可以對(duì)編輯器做各種自定義的配置瞒瘸。

配置文件:

{
  "explorer.confirmDelete": false,
  "workbench.iconTheme": "vscode-icons",
  "todo-tree.tree.showScanModeButton": false,
  "[javascriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "window.zoomLevel": 0,
  // 代碼對(duì)齊:開啟保存自動(dòng)格式化坷备,調(diào)用prettier時(shí)自動(dòng)eslint-fix
  "editor.formatOnSave": true,
  // 代碼對(duì)齊:設(shè)置默認(rèn)格式化規(guī)則
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  //eslint:配置項(xiàng)
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  //eslint:配置項(xiàng)
  "eslint.codeAction.showDocumentation": {
    "enable": true
  },

  "explorer.confirmDragAndDrop": false,
  "[json]": {
    "editor.quickSuggestions": {
      "strings": true
    },
    "editor.suggest.insertMode": "replace"
  }
}

第三步:在項(xiàng)目中添加.prettierrc.js.eslintrc.js文件

image.png

.eslintrc.js 配置:

module.exports = {
  root: true,
  parserOptions: {
    parser: 'babel-eslint',
    sourceType: 'module',
  },
  env: {
    browser: true,
    node: true,
    es6: true,
  },
  globals: {
    // 根據(jù)不同的項(xiàng)目環(huán)境自行配置
  },
  extends: ['plugin:vue/recommended', 'eslint:recommended'],
  rules: {
    'no-var': 2,//禁用var 
    semi: 2,//開啟結(jié)尾分號(hào)
    'no-console': 2, //禁用console
   //還有一些規(guī)則可以去https://www.cnblogs.com/wuconghui/p/11275059.html
  },
};

.prettierrc.js 配置:

module.exports = {
  printWidth: 120, // 超過最大值換行
  semi: false, // 句尾不添加分號(hào)
  singleQuote: true, // 使用單引號(hào)代替雙引號(hào)
  trailingComma: 'es5', // 在ES5中有效的結(jié)尾逗號(hào)(對(duì)象,數(shù)組等)
  bracketSpacing: true, // 在對(duì)象情臭,數(shù)組括號(hào)與文字之間加空格 "{ foo: bar }"
  jsxBracketSameLine: true, // 在jsx中把'>' 是否單獨(dú)放一行
  jsxSingleQuote: false, // 在jsx中使用單引號(hào)代替雙引號(hào)
  insertPragma: false,
  tabWidth: 2, // 縮進(jìn)字節(jié)數(shù)
  arrowParens: 'avoid', // (x) => {} 箭頭函數(shù)參數(shù)只有一個(gè)時(shí)是否要有小括號(hào)省撑。avoid:省略括號(hào)
  useTabs: false,
  endOfLine: 'auto',
};

第四步:配置format命令和eslint命令

雖然完成第二、三步之后俯在,每次編輯完文件在保存時(shí)竟秫,其都會(huì)自動(dòng)做格式化處理。但對(duì)于已有項(xiàng)目跷乐,如何能快速將已有文件批量格式化呢肥败?

是的沒錯(cuò),那就是在 package.json 中配置命令

 "scripts": {
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
    "lint": "eslint --fix --ext .js src/ ",
    "format": "prettier --write 'src/**/*.{js,jsx,css,md}'"愕提,
    "start": "npm run serve"
  },

然后在控制臺(tái)中運(yùn)行 npm run formatnpm run lint 即可對(duì)文件進(jìn)行批量格式化處理拙吉。

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市揪荣,隨后出現(xiàn)的幾起案子筷黔,更是在濱河造成了極大的恐慌,老刑警劉巖仗颈,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佛舱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡挨决,警方通過查閱死者的電腦和手機(jī)请祖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脖祈,“玉大人肆捕,你說我怎么就攤上這事「歉撸” “怎么了慎陵?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)喻奥。 經(jīng)常有香客問我席纽,道長(zhǎng),這世上最難降的妖魔是什么撞蚕? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任润梯,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纺铭。我一直安慰自己寇钉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布舶赔。 她就那樣靜靜地躺著扫倡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顿痪。 梳的紋絲不亂的頭發(fā)上镊辕,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天油够,我揣著相機(jī)與錄音蚁袭,去河邊找鬼。 笑死石咬,一個(gè)胖子當(dāng)著我的面吹牛揩悄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鬼悠,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼删性,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了焕窝?” 一聲冷哼從身側(cè)響起蹬挺,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎它掂,沒想到半個(gè)月后巴帮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虐秋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年榕茧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片客给。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡用押,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靶剑,到底是詐尸還是另有隱情蜻拨,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布桩引,位于F島的核電站官觅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阐污。R本人自食惡果不足惜休涤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧功氨,春花似錦序苏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跺涤,卻和暖如春匈睁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桶错。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工航唆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人院刁。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓糯钙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親退腥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子任岸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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