亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

實例詳解Vue項目使用eslint + prettier規范代碼風格

2019-11-19 13:12:27
字體:
來源:轉載
供稿:網友

團隊開發的項目,如果沒有對代碼風格作要求,有多少團隊成員,就當然會出現多少種不同的代碼風格。因此,我們需要一種能夠統一團隊代碼風格的工具,作為強制性的規范,統一整個項目的代碼風格。

幸好,我們有 eslint 和 prettier 。

eslint VS prettier

應該大多數項目都已經采用eslint來對代碼進行質量檢查,可能少部分還會采用其進行一定程度上的統一風格。那為什么還需要prettier呢?我們先來對它們作一個簡單的了解。

各種linters

總體來說,linters有兩種能力:

  1. 檢查代碼質量 ,比如是否有已定義但未使用的變量,或者使用函數式編程的函數是否產生副作用等。
  2. 檢查代碼風格 ,比如每行的最大長度,或者是否使用拖尾逗號等。

其中,eslint文檔中,帶扳手圖標的規則就是eslint能夠自動修復的規則。而不帶該圖標的規則,eslint則只能給出錯誤或警告,隨后由開發者人工修復。

prettier

pretter沒有對代碼的質量進行檢查的能力,其只會對代碼風格按照指定的規范進行統一,避免一個項目中出現多種不同的代碼風格。

項目配置

此處使用vue項目作為例子

一、首先配置eslint

如果大家的項目是使用vue cli生成的,并且選擇使用eslint的話,那么默認在項目根目錄下就會生成.eslintrc.js。如果沒有,也可以在項目根目錄下創建該文件以及.eslintignore文件

此處我使用eslint-plugin-vue,選擇的是vue/strongly-recommended規則。

npm install --save-dev eslint eslint-plugin-vue@next// .eslintrc.jsextends: {  'plugin:vue/strongly-recommended'}// .eslintignore/build//config//dist//*.js/test/unit/coverage/

如果希望在重新編譯的時候eslint自動修復代碼,需要在webpack配置中加入eslint,并且設置 fix: true ,并且在devserver中開啟eslint。

// config/index.jsmodule.exports = { dev: {  useEslint: true,  }}// webpack.base.conf.jsconst createLintingRule = () => ({ test: //.(js|vue)$/, loader: 'eslint-loader', enforce: 'pre', include: [resolve('src'), resolve('test')], options: {  formatter: require('eslint-friendly-formatter'),  emitWarning: !config.dev.showEslintErrorsInOverlay,  fix: true, }})

二、配置prettier

由于使用eslint,并不能最大程度地統一代碼風格,因此我們需要引入prettier。

npm install --save-dev prettier

按照實際需要配置prettier

//prettier.config.js

module.exports = {  "printWidth": 80, // 每行代碼長度(默認80) "tabWidth": 2, // 每個tab相當于多少個空格(默認2) "useTabs": false, // 是否使用tab進行縮進(默認false) "singleQuote": true, // 使用單引號(默認false) "semi": true, // 聲明結尾使用分號(默認true) "trailingComma": "all", // 多行使用拖尾逗號(默認none) "bracketSpacing": true, // 對象字面量的大括號間使用空格(默認true) "jsxBracketSameLine": false, // 多行JSX中的>放置在最后一行的結尾,而不是另起一行(默認false) "arrowParens": "avoid" // 只有一個參數的箭頭函數的參數是否帶圓括號(默認avoid)};

需要在package.json里面配置調用prettier進行格式化的命令

// package.json

"scripts": { "format": "prettier --write /"src/**/*.js/" /"src/**/*.vue/"",}

至此,可以在命令行中輸入npm run format對代碼進行格式化了。

配置husky和lint-staged

由于直接使用prettier進行代碼格式化仍存在一些弊端,例如:

一次性對所有文件進行格式化,如果是項目中途加入prettier,會對一些早已經編寫完成的代碼進行格式化,可能會造成沖突或者一些不可預知的問題,降低項目穩定性。

每次都要鍵入npm run format進行代碼格式化,多了額外的操作,開發體驗不良好。

故此,我們可以修改代碼格式化的時機,僅對本次提交的代碼進行格式化,并且在代碼提交之前進行格式化,確保存入倉庫的代碼都是格式化后的良好的代碼。

husky是一款可以幫助我們使用git hooks的第三方庫,可以根據package.json文件里定義的鉤子和鉤子執行的命令將要執行的操作寫對應的鉤子腳本里。

lint-staged,官方說明是一款可以對git提交的代碼使用linter的第三方庫,其依賴于husky使用git hooks。此處我們不僅僅可以利用其調用linters,還可以調用prettier對代碼進行格式化。

npm install --save-dev lint-staged husky

// package.json

"scripts": {  "precommit": "lint-staged" // precommit鉤子執行lint-staged},"lint-staged": {  "src/**/*.{js,json,css,vue}": [   "prettier --write", // 先執行prettier,再執行eslint,保證代碼質量   "eslint --fix",   "git add"  ]},

同時使用eslint和prettier的配置

由于需要同時使用prettier和eslint,而prettier的一些規則和eslint的一些規則可能存在沖突,所以需要將eslint的一些可能與prettier發生沖突的代碼格式化規則關閉。這里使用eslint-plugin-prettier和eslint-config-prettier。

eslint-plugin-prettier可以將prettier的規則設置為eslint的規則,對不符合規則的進行提示。(與eslint-plugin-vue相同)

eslint-config-prettier可以關閉eslint可能與prettier發生沖突的代碼格式化規則。官方稱eslint-plugin-prettier需要與eslint-config-prettier搭配食用才能獲得最佳效果。

npm install --save-dev eslint-plugin-prettier eslint-config-prettier
// .eslintrc.jsmodule.exports = {  extends: [    'plugin:vue/strongly-recommended',    'plugin:prettier/recommended'  ]  rules: {    "prettier/prettier": "error"  }}

經過上述配置,每次git commit的時候,都會先執行prettier以及eslint對代碼進行格式化和質量檢查,確保代碼沒有問題之后再提交

整體配置文件

npm install -D prettier husky lint-staged eslint-config-prettier eslint-plugin-prettier// package.json{ "scripts": {  "format": "prettier --write /"src/**/*.js/" /"src/**/*.vue/"",  "precommit": "lint-staged" }, "lint-staged": {  "src/**/*.{js,json,css,vue}": [   "prettier --write",   "eslint --fix",   "git add"  ] }, "devDependencies": {  "eslint": "^4.15.0",  "eslint-config-prettier": "^2.9.0",  "eslint-plugin-prettier": "^2.6.2",  "eslint-plugin-vue": "^4.0.0",  "husky": "^0.14.3",  "lint-staged": "^7.2.0",  "prettier": "^1.14.2", },}// eslintrc.js// https://eslint.org/docs/user-guide/configuringmodule.exports = { extends: [  'plugin:vue/strongly-recommended',  'plugin:prettier/recommended' ], // add your custom rules here rules: {  // ...other codes  "prettier/prettier": "error" }}//prettier.config.jsmodule.exports = {  "printWidth": 80, // 每行代碼長度(默認80) "tabWidth": 2, // 每個tab相當于多少個空格(默認2) "useTabs": false, // 是否使用tab進行縮進(默認false) "singleQuote": true, // 使用單引號(默認false) "semi": true, // 聲明結尾使用分號(默認true) "trailingComma": "all", // 多行使用拖尾逗號(默認none) "bracketSpacing": true, // 對象字面量的大括號間使用空格(默認true) "jsxBracketSameLine": false, // 多行JSX中的>放置在最后一行的結尾,而不是另起一行(默認false) "arrowParens": "avoid" // 只有一個參數的箭頭函數的參數是否帶圓括號(默認avoid)};

寫在最后

一般IDE集成了eslint或者prettier工具的話,會默認根據項目根目錄下相關配置文件進行代碼檢查。

如果使用vscode,vetur的默認代碼風格化使用的就是prettier,會自動檢索項目根目錄下的prettier配置文件進行格式化。eslint檢索工具推薦使用eslint插件,安裝后也會自動檢索eslint配置文件進行代碼檢查,非常方便。

總結

以上所述是小編給大家介紹的Vue項目使用eslint + prettier規范代碼風格,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品小视频在线观看| 久久综合网hezyo| 中文字幕亚洲综合久久筱田步美| 色多多国产成人永久免费网站| 国产98色在线| 日韩h在线观看| 国产精品av在线播放| 日本19禁啪啪免费观看www| 亚洲午夜未删减在线观看| 91视频国产高清| 欧美日韩亚洲激情| 日韩免费观看在线观看| 国产成人精品国内自产拍免费看| 亚洲欧洲一区二区三区在线观看| 亚洲午夜久久久久久久| 黑人与娇小精品av专区| 欧美大片免费看| 亚洲91精品在线观看| 欧美性videos高清精品| 成人av在线亚洲| 高清一区二区三区日本久| 国产日韩欧美中文| 2019亚洲男人天堂| 日韩亚洲成人av在线| 亚洲美女又黄又爽在线观看| 亚洲黄色免费三级| y97精品国产97久久久久久| 国产女同一区二区| 成人情趣片在线观看免费| 2019中文字幕全在线观看| 国产日韩精品在线观看| 欧美视频一区二区三区…| 韩国精品美女www爽爽爽视频| 亚洲欧美精品suv| 国产日韩亚洲欧美| 欧美疯狂xxxx大交乱88av| 亚洲人高潮女人毛茸茸| 久久人91精品久久久久久不卡| 亚洲精品国产精品乱码不99按摩| 久久69精品久久久久久国产越南| 性欧美暴力猛交69hd| 伊人伊成久久人综合网站| 日本精品免费一区二区三区| 日韩av影视综合网| 欧美黑人极品猛少妇色xxxxx| 亚洲性生活视频在线观看| 中文字幕亚洲国产| 日韩国产精品一区| 欧美极品少妇与黑人| 国产成人综合亚洲| 国产啪精品视频网站| 在线日韩日本国产亚洲| 国产日韩中文字幕在线| 久久亚洲国产成人| 亚洲欧美精品suv| 欧美亚洲视频在线看网址| 久久久精品免费| 国产成人精品久久亚洲高清不卡| 久久久久久久久久久91| 欧美精品在线观看| 成人高清视频观看www| 久久伊人精品视频| 亚洲视频精品在线| 欧美日韩一区二区免费在线观看| 日韩在线免费视频观看| 2019中文字幕在线免费观看| 亚洲新声在线观看| 日韩欧美亚洲一二三区| 全色精品综合影院| 国产精品视频白浆免费视频| 欧美激情精品久久久久久| 91人成网站www| 91在线|亚洲| 日韩中文字幕亚洲| 久久久在线免费观看| 疯狂做受xxxx高潮欧美日本| 亚洲国产成人av在线| 亚洲最大的免费| 性亚洲最疯狂xxxx高清| 91免费国产视频| 黄色精品一区二区| 成人av色在线观看| 国产69精品久久久久99| 欧美日韩国产区| 亚洲午夜小视频| 久久久免费高清电视剧观看| 精品国产一区二区在线| 日韩视频永久免费观看| 欧美乱人伦中文字幕在线| 91免费观看网站| 国产精品免费一区二区三区都可以| 久久精品久久久久久| 久久影院在线观看| 国产视频精品免费播放| 欧美人与物videos| 亚洲视频在线视频| 日韩视频在线免费| 亚洲综合日韩在线| 国产成人鲁鲁免费视频a| 亚洲成人三级在线| 欧美高清不卡在线| 久久久在线免费观看| 中文字幕在线视频日韩| 亚洲成年网站在线观看| 国产精品欧美一区二区三区奶水| 欧美中文字幕在线视频| 日本免费久久高清视频| 久久精品男人天堂| 久久久精品网站| 欧美中文在线字幕| 日韩欧美在线观看| 国产成人鲁鲁免费视频a| 欧美日韩免费网站| 亚洲欧美在线第一页| 久久精品一本久久99精品| 国产国语刺激对白av不卡| 欧美日产国产成人免费图片| 日韩在线观看视频免费| 日韩va亚洲va欧洲va国产| 国产精品偷伦视频免费观看国产| 日韩欧美在线一区| 欧美大片va欧美在线播放| 亚洲精品美女在线观看| 中文字幕av日韩| 久久久久久久久久久久av| 在线视频欧美性高潮| xxav国产精品美女主播| 亚洲成人久久一区| 国产精品一区=区| 97在线看福利| 91精品国产自产在线| 自拍视频国产精品| 欧美一级黑人aaaaaaa做受| 亚洲精品女av网站| 欧美在线免费观看| 在线看福利67194| 欧美丰满少妇xxxx| 九九热在线精品视频| 日韩欧美在线视频日韩欧美在线视频| 日韩一区二区精品视频| 欧美精品做受xxx性少妇| 精品久久久久久中文字幕大豆网| 久久久久久亚洲精品| 成人免费视频在线观看超级碰| 国产一区二区三区精品久久久| 欧美日韩亚洲天堂| 久久九九全国免费精品观看| 久久久久久69| 91久久在线观看| 国产精品久久久久aaaa九色| 欧美日韩国产精品| 668精品在线视频| xxxx性欧美| 欧美猛男性生活免费| 在线看片第一页欧美| 亚洲欧美中文日韩在线v日本| 91免费高清视频| 91chinesevideo永久地址| 91在线免费视频| 国产视频自拍一区| 欧美乱大交xxxxx另类电影| 亚洲а∨天堂久久精品喷水| 中文字幕日韩综合av| 欧美中文字幕视频在线观看|