本文我們將接著上篇Vue前端架構學習(一)來完成設定eslint、babel、postcss,希望能幫助大家。
我們採用eslint --init
的方式來建立eslintrc.js。
對了,前提我們需要全域安裝eslint:npm i -g eslint
。
安裝完全局eslint以後,我們在專案根目錄使用eslint --init
,我選擇自訂的方式來規定eslint規則:
➜ vue-construct git:(master) ✗ eslint --init ? How would you like to configure ESLint? Answer questions about your style ? Are you using ECMAScript 6 features? Yes ? Are you using ES6 modules? Yes ? Where will your code run? Browser, Node ? Do you use CommonJS? Yes ? Do you use JSX? No ? What style of indentation do you use? Spaces ? What quotes do you use for strings? Single ? What line endings do you use? Unix ? Do you require semicolons? No ? What format do you want your config file to be in? (Use arrow keys) ❯ JavaScript
當然,你可以按照自己喜歡,選擇自己想要的方式,例如How would you like to configure ESLint? 這個問題的時候,可以選擇popular的規則,有Google、standard等規則,選擇你想要的就好。
我po下我的設定:
// 创建这个文件的话,本王推荐用eslint --init创建 module.exports = { "env": { "browser": true, "node": true }, // https://stackoverflow.com/questions/38296761/how-to-support-es7-in-eslint // 为了让eslint支持es7或更高的语法 "parser": 'babel-eslint', "extends": "eslint:recommended", "parserOptions": { "sourceType": "module" }, "plugins": [ // https://github.com/BenoitZugmeyer/eslint-plugin-html // 支持 *.vue lint "html" ], // https://eslint.org/docs/rules/ "rules": { "indent": [ "error", 2 ], "linebreak-style": [ "error", "unix" ], "quotes": [ "error", "single" ], "semi": [ "error", "never" ], // https://eslint.org/docs/user-guide/configuring#using-configuration-files // "off" or 0 - turn the rule off // "warn" or 1 - turn the rule on as a warning (doesn’t affect exit code) // "error" or 2 - turn the rule on as an error (exit code is 1 when triggered) 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 'no-console': 0, } };
建立.babelrc
文件,直接上設定:
{ "presets": [ [ "env", { "targets": { "browsers": [ "> 1%", "last 2 versions", "ie >= 10" ] }, "modules": false, "useBuiltIns": true } ] ], "plugins": [ "transform-object-rest-spread", "syntax-dynamic-import" ] }
配合webpack配置:
{ test: /\.js$/, include: [resolve('app')], use: [ 'babel-loader', 'eslint-loader' ] },
我們使用的是babel-preset-env,我們知道,babel只是轉譯了高級語法,例如lambda,class,async等,並不會支援高級的api,所以需要babel-polyfill的幫忙。方便的是,我們只需要"useBuiltIns": true
,然後npm安裝babel-polyfill,再在webpack配置中的entry帶上babel-polyfill就好了。
babel-preset-env的優點:
透過targets
來決定支援到那個哪些版本的語法就夠了,不會過渡轉譯,可控性強
透過useBuiltIns
來支援babel-polyfill的按需加載,而不是一口氣把整個包打入,因為其實我們只用到了很小一部分
transform-object-rest-spread是為了支援const a = {name: kitty, age: 7}; const b = { ... a }
這種es7語法。
syntax-dynamic-import是為了支援const Home = () => import('../views/home')
這種語法,達到按需分割、載入的目的。
建立postcss.config.js
文件,上設定:
module.exports = { plugins: [ require('autoprefixer') ], // 配置autoprefix browsers: [ "> 1%", "last 2 versions", "ie >= 10" ] }
這篇不多,就做了三件事,eslint、babel、postcss。
相關推薦:
##
以上是Vue前端架構學習(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!