規範化是咱們踐行前端工程化中重要的一部分css
爲何有規範標準html
哪些須要規範化標準前端
實施規範化的方法vue
常見的規範化實現方式node
初始化項目,安裝 ESLint 模塊爲開發依賴react
安裝:yarn add eslint --dev
webpack
完成 eslint 使用配置,編寫問題代碼,使用 eslint 執行檢測git
使用 yarn eslint 文件.js
時,會報錯說未找到eslint 配置文件web
經過yarn eslint --init
進行命令行交互typescript
安裝事後生成 .eslintrc.js
文件
執行 yarn eslint ./文件.js
,查看錯誤
# .eslintrc.js module.exports = { env: { browser: true, es2021: true }, extends: [ 'standard' ], parserOptions: { ecmaVersion: 12 }, rules: { 'no-alert':"error" } }
env 設置運行環境,參數並不互斥
extends
繼承共享配置,能夠同時繼承多個共享配置,是個數組parserOptions
設置語法解析器的相關配置,6(es2015)— 12(es2021),只表明語法檢測,不表明成員是否可用,成員是否可用經過env環境rules
設置每一個校驗規則的開啓或關閉rules:{
內部的校驗規則:off
}
參考文章
globals
配置全局成員,新版已經沒了,參考node_modules/eslint-config-standard/eslintrc.json/globals
jQuery("#abc") // 使用 globals:{ "jQuery":"readonly" // 配置 }
給校驗的某行添加
// eslint-disable-line no-template-curly-in-string(禁用的規則)
基於gulp項目
安裝:
yarn add eslint gulp-eslint --dev
安裝eslintyarn eslint --init
初始化 .eslintrc配置安裝事後有個報錯Error: .eslintrc.js » eslint-config-standard: Environment key "es2021" is unknown
安裝:yarn add eslint-config-standard@14.1.1 eslint-plugin-standard --dev .eslintrc.js 中的 env:es2021 改成 env:es2020
雖然eslint在代碼中顯示了報錯緣由,可是在控制檯中能夠正常運行,並不會報錯。
添加plugins.eslint.format()
plugins.eslint.failAfterError()
工做流解決
# gulpfile.js const script = () => { return src('src/assets/scripts/*.js', { base: 'src' }) .pipe(plugins.eslint()) .pipe(plugins.eslint.format()) .pipe(plugins.eslint.failAfterError()) // 控制檯顯示錯誤 .pipe(plugins.babel({ presets: ['@babel/preset-env'] })) .pipe(dest('temp')) .pipe(bs.reload({ stream: true })) // yarn add gulp-babel @babel/core @babel/preset-env --dev }
解決全局變量 $
# eslintrc.js module.exports = { env: { browser: true }, extends: [ 'standard' ], parserOptions: { ecmaVersion: 8 }, rules: { }, globals: { $: 'readonly' // 添加 } }
此時再運行就能夠正常運行了
經過loader進行eslint校驗
步驟
yarn add eslint eslint-loader --dev
yarn eslint --init
修改webpack.config.js
module: { rules: [ { test: /\.js$/, use: [ { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } }, 'eslint-loader' // 添加eslint-loader ] } ] },
當咱們在js文件預留一個錯誤時,執行yarn webpack
打包後查看控制檯
備註:基於react
添加 eslint-plugin-react
# .eslintrc.js module.exports = { rules:{ 'react/jsx-uses-react':2, // 2就是不校驗 'react/jsx-uses-vars':2 // App is defined but never-unsed-vars }, plugins:[ 'react' // eslint-plugin-react ] }
yarn add @vue/cli
安裝yarn vue create mc-app
建立vue框架並配置yarn serve
運行yarn add typescript --dev
yarn add eslint --dev
yarn eslint --init
初始化完成後,會自動給配置文件添加parser解析器,解析ts語法
# .eslintrc.js module.exports = { env: { browser: true, es2020: true }, extends: [ 'standard' ], parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 11 }, plugins: [ '@typescript-eslint' ], rules: { } }
執行yarn eslint ./index.ts
執行某個ts文件
樣式代碼檢查規則
提供了cli工具快速調用,可使用(Sass,Less,PostCss),支持Gulp,Webpack集成
安裝:yarn add stylelint --dev
手動配置: .stylelintrc.js
,
校驗css安裝配置模塊:yarn add stylelint-config-standard --dev
# .stylelintrc.js module.exports={ extends:"stylelint-config-standard" // 配置繼承模塊 }
執行:yarn stylelint xx.css
,就能夠看到語法校驗報錯了
校驗sass:yarn add stylelint-config-sass-guidelines --dev
# .stylelintrc.js module.exports={ extends: [ "stylelint-config-standard", "stylelint-config-sass-guidelines" ] }
執行:yarn stylelint xx.sass
,就能夠看到stylelint報錯了
安裝:yarn add prettier --dev
執行:yarn prettier ./文件 --write
會將全部文件格式化
代碼在提交至遠程倉庫以前未執行lint工做,經過git hooks在代碼提交前強制lint
git hooks也稱鉤子,每一個鉤子都對應一個任務,經過腳本編寫鉤子任務觸發具體執行內容,查看.git/hooks
下鉤子文件
Husky
包能夠實現Git Hooks的使用需求,在不編寫shell的前提下使用hooks的功能
安裝:yarn add husky --dev
配置 package.json
"husky":{ "hooks":{ "pre-commit":"yarn eslint ./文件名" // 給.git/hook文件內的 pre-commit鉤子添加執行 } }
配置後在提交git commit -m "xx"
時會觸發pre-commit
鉤子並執行yarn eslint
處理commit時檢查後的代碼配合lint-staged
配置安裝: yarn add lint-staged --dev
配置 package.json
"husky":{ "hooks":{ "pre-commit": "yarn lint-staged" // 提交後執行lint-staged內的任務 } }, "lint-staged":{ "*.js":[ // 添加後續任務 "eslint", "git add" ] }