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

首頁 > 網站 > WEB開發 > 正文

在React+Babel+Webpack環境中使用ESLint

2024-04-27 15:19:24
字體:
來源:轉載
供稿:網友

ESLint是js中目前比較流行的插件化的靜態代碼檢測工具。通過使用它可以保證高質量的代碼,盡量減少和提早發現一些錯誤。使用eslint可以在工程中保證一致的代碼風格,特別是當工程變得越來越大、越來越多的人參與進來時,需要加強一些最佳實踐。

本文假設您已經有一個react+babel+webpack的起始工程,可以參考react-webapp-startkit

首先,安裝eslint包

在項目的跟目錄下,運行

npm --save-dev install eslint

因為我們使用了webpack,所以必須要告訴webpack我們在構建時使用eslint,安裝eslint-loader

npm --save-dev install eslint-loader

安裝之后,我們可以再webpack配置中使用eslint加載器了。webpack.config.js

...module: {  loaders: [    {      test: //.jsx?$/,      exclude: /node_modules/,      loader: 'react-hot!babel'    },    {      test: //.js$/,      exclude: /node_modules/,      loader: 'eslint-loader'    }  ]},...

此外,我們既可以在webpack配置文件中指定檢測規則,也可以遵循最佳實踐在一個專門的文件中指定檢測規則。我們就采用后面的方式。

在根目錄下:

touch .eslintrc

.eslintrc

{  "rules": {  }}

稍后我們可以在該文件中指定規則,但首先我們要在Webpack配置文件中引入該文件。

webpack.cofnig.js

...devServer: {  contentBase: './dist',  hot: true,  historyApiFallback: true},eslint: {  configFile: './.eslintrc'},plugins: [...

現在可以啟動app了,在根目錄下

npm run dev // 取決與package.json中的定義

你可能會看到The keyWord ‘import’ is reserved的解析錯誤。這是因為eslint還不知道通過Babel使用的ES6特性(比如import)。

ESLint + Babel

之前,我們已經安裝了babel-loader(在起步工程中)來轉換我們的代碼。現在我們可以將它和eslint-loader一同使用。

webpack.config.js

...module: {  loaders: [    {      test: //.jsx?$/,      exclude: /node_modules/,      loader: 'react-hot!babel'    },    {      test: //.js$/,      exclude: /node_modules/,      loaders: ['babel-loader', 'eslint-loader']    }  ]},...

或者,使用webpack的PReLoaders

webpack.config.js

...module: {  preLoaders: [    {      test: //.js$/,      exclude: /node_modules/,      loader: 'eslint-loader'    },  ],  loaders: [    {      test: //.jsx?$/,      exclude: /node_modules/,      loader: 'react-hot!babel'    }  ]},...

我們可以通過babel-eslint來檢測ES6代碼。

還是先安裝

npm install --save-dev babel-eslint

修改.eslintrc

{  parser: "babel-eslint",  "rules": {  }}

現在應該可以啟動app了,但是沒有任何錯誤顯示,不要高興的太早,這只是因為我們還沒有添加任何檢測規則。

ESLint規則

我們來添加我們的第一條規則。

修改.eslintrc

..."rules": {  "max-len": [1, 70, 2, {ignoreComments: true}]}...

我們添加了一條規則來檢查代碼的單行長度,當單行代碼長度大于70個字符時,檢測會報錯。

啟動app,你可能會看到關于代碼長度的錯誤,因為某些行多于70個字符了。我們可以修改規則來允許更多的字符。

.eslintrc

..."rules": {  "max-len": [1, 120, 2, {ignoreComments: true}]}...

如果還有錯誤,可能你就需要考慮修改代碼了。

React的ESLint規則

現在來添加一些檢測React的代碼規則,使用eslint-plugin-react。

npm --save-dev install eslint-plugin-react

安裝之后,我們可以使用react插件來指定我們關于react的第一條代碼規則。比如我們要求組件指定PropTypes。

.eslintrc

{  parser: "babel-eslint",  "plugins": [    "react"  ],  "rules": {    "max-len": [1, 120, 2, {ignoreComments: true}],    "prop-types": [2]  }}

當啟動app后,你可能會看到PropTypes定義的錯誤,你可能想要修復這些錯誤。

另外,我們可以使用一些包含推薦規則的預設,但暫時我們先擴展自己的規則。

擴展ESLint規則

我們不想每次都指定這些規則,所幸已經有很多符合最佳實踐的規則。其中之一就是Airbnb Style Guide,此外Airbnb還開源了他們自己的ESlint配置。

已經有一部分依賴包安裝了,但還缺少一些:

npm --save-dev install eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y

Now we can add a one-liner to our ESLint configuration to use Airbnbs’ ESLint configuration. When you look back at the packages we installed, you can see that the configuration includes JSX and React rules.

接下來,通過一行代碼的配置來讓我們可以使用Airbnb的ESLint配置(你可以通過查看node_modules里面的包來查看,這個配置包含了jsx和React的規則)

.eslintrc

{  parser: "babel-eslint",  "extends": "airbnb",  "rules": {    "max-len": [1, 120, 2, {ignoreComments: true}],    "prop-types": [2]  }}

我們可以看到可以很簡單的使用別人的配置規則來擴展ESLint規則。我們還可以使用其他的擴展,但目前Airbnb代碼規范和ESlint配置非常的受歡迎并被大多數開發者所接受。

微調

有時候,為了迎合自己的項目需要,需要對某些特殊的規則微調。比如我們不想看到no-unused-vars(為使用過的變量定義)的警告,可以

.eslintrc

{  parser: "babel-eslint",  "extends": "airbnb",  "rules": {    "no-unused-vars": 0,    "max-len": [1, 120, 2, {ignoreComments: true}],    "prop-types": [2]  }}

上面這種是全局的配置,如果是只想在某些文件中禁止檢測,可以如下修改(通過注釋的方式)

src/index

/*eslint-disable no-unused-vars*/import SC from 'soundcloud';/*eslint-enable no-unused-vars*/import React from 'react';import ReactDOM from ‘react-dom';...

pre-commit鉤子

如果項目使用了git,可以通過使用pre-commit鉤子在每次提交前檢測,如果檢測失敗則禁止提交??梢栽诤艽笠欢ǔ潭壬媳WC代碼質量。

這里我們使用了pre-commitgit包來幫助我們實現這一目標。

首先在package.json中添加script命令:

"scripts": {  "eslint": "eslint --ext .js src"}

其次,安裝pre-commit

npm install pre-commit --save-dev

最后,在package.json中配置pre-commit需要運行的命令:

"pre-commit": [  "eslint"]

完成之后,在每次提交之前,都會運行eslint命令進行檢測,如果檢測到有違反代碼規則的情況,則會返回1,導致git commit失敗。

done.

原文地址:http://www.cnblogs.com/le0zh/p/5619350.html
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久97精品久久久久久久不卡| 久久黄色av网站| 久久精品人人做人人爽| 九九久久久久99精品| 在线观看视频99| 国产日韩欧美中文| 国产精品999| 国产在线视频2019最新视频| 亚洲欧美日韩高清| 一区二区三区美女xx视频| 亚洲欧美中文在线视频| 欧美在线观看一区二区三区| 91色视频在线观看| 成人激情在线观看| 不卡在线观看电视剧完整版| 91精品久久久久久久久中文字幕| 精品视频—区二区三区免费| 最近2019年中文视频免费在线观看| 亚洲成**性毛茸茸| 亚洲国产古装精品网站| 亚洲精品久久久久久久久久久久久| 亚洲国产精品系列| 成人午夜在线观看| 欧美亚洲国产视频| 欧美www在线| 国产精品久久久久aaaa九色| 97在线观看免费高清| 九九热这里只有在线精品视| 欧美国产高跟鞋裸体秀xxxhd| 97久久国产精品| 亚洲欧美日韩中文在线制服| 亚洲人成在线播放| 欧美成人亚洲成人日韩成人| 成人黄色在线播放| 久久精品视频播放| 亚洲综合在线做性| 欧美性极品xxxx做受| 国产精品日本精品| 亚洲va国产va天堂va久久| 久久国产精品免费视频| 色av中文字幕一区| 欧美黄色片免费观看| 亚洲男人av电影| 亚洲国产高清福利视频| 岛国av午夜精品| 精品国偷自产在线| 68精品国产免费久久久久久婷婷| 日韩精品在线免费播放| 色爱精品视频一区| 欧美孕妇毛茸茸xxxx| 日韩中文字幕不卡视频| 国产91在线播放| 亚洲国产精品国自产拍av秋霞| 国产一区二区三区在线观看视频| 日日骚久久av| 国产激情久久久久| 成人羞羞国产免费| 亚洲色图第三页| 日韩性xxxx爱| 久久久久久有精品国产| 欧美日韩国产黄| 日韩欧美一区二区三区| 国产午夜精品一区二区三区| 亚洲国产精品成人一区二区| 久久久久久久久久久av| 日韩中文字幕在线播放| 国产精品嫩草影院久久久| 亚洲第一综合天堂另类专| 亚洲色图激情小说| 国产精品久久久久久av福利| 国产欧美在线看| 久久久国产一区二区三区| 亚洲第一色在线| 亚洲另类激情图| 浅井舞香一区二区| 精品久久久久人成| 欧美裸体视频网站| 亚洲精品999| 国产精品精品一区二区三区午夜版| 国产欧亚日韩视频| 92版电视剧仙鹤神针在线观看| 国产精品久久久久久久av电影| 欧美超级乱淫片喷水| 国产精品盗摄久久久| 国产丝袜精品视频| 亚洲精品久久久一区二区三区| 精品成人乱色一区二区| 久久综合国产精品台湾中文娱乐网| 91理论片午午论夜理片久久| 欧美成人合集magnet| 欧美极度另类性三渗透| 国产精品jvid在线观看蜜臀| 亚洲精品wwww| 欧美亚洲日本黄色| 欧美大秀在线观看| 日韩欧美亚洲国产一区| 国产精品久久久久久久久久东京| 日韩视频免费在线观看| 欧美成人免费全部| 日韩美女写真福利在线观看| 国产亚洲一区二区精品| 2018中文字幕一区二区三区| 精品爽片免费看久久| 亚洲国产福利在线| 亚洲欧美日韩第一区| 欧美电影免费观看电视剧大全| 亚洲美腿欧美激情另类| 国产a∨精品一区二区三区不卡| 欧美日韩国产黄| 欧美日韩第一视频| 日韩成人高清在线| 亚洲欧洲xxxx| 日韩中文有码在线视频| 日韩中文综合网| 精品中文字幕在线2019| 亚洲一区999| 国产美女高潮久久白浆| 91理论片午午论夜理片久久| 久久久国产精品视频| 欧美精品久久久久久久免费观看| 成人精品一区二区三区电影黑人| 久久久极品av| 97在线视频一区| 亚洲丝袜在线视频| 亚洲无限乱码一二三四麻| 日韩成人在线视频观看| 欧美成人中文字幕在线| 精品色蜜蜜精品视频在线观看| 国产剧情日韩欧美| 亚洲日本欧美中文幕| 一区三区二区视频| 欧美激情第6页| 国产精品第2页| 福利视频第一区| 亚洲色图偷窥自拍| 久久精品国产久精国产一老狼| 亚洲欧美另类中文字幕| 欧美激情精品久久久久| 中文字幕av一区二区三区谷原希美| 亚洲人成网在线播放| 中文字幕av一区| 亚洲人成电影在线| 欧美一级大片在线观看| 久久99久久99精品中文字幕| 奇米一区二区三区四区久久| 国产福利精品av综合导导航| 亚洲综合精品伊人久久| 中文字幕欧美视频在线| 亚洲国产中文字幕在线观看| 欧美专区在线观看| 久久久久久成人精品| 在线亚洲男人天堂| 亚洲国产天堂久久综合| 91地址最新发布| 亚洲一区二区三区xxx视频| 日韩精品中文字幕久久臀| 久久大大胆人体| 国产精品久久久久久久久久ktv| 欧美激情国产日韩精品一区18| 久久免费精品视频| 国产美女91呻吟求| 国产美女扒开尿口久久久| 亚洲欧美日韩区| 国产亚洲精品久久久久久牛牛|