前言
這一篇,我們將接著上篇來完成配置eslint、babel、postcss。
開發
一、配置eslint
我們採用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,
}
};
複製程式碼
二、配置babel
建立.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
建立postcss.config.js
檔案,上配置:
module.exports = {
plugins: [
require('autoprefixer')
],
// 配置autoprefix
browsers: [
"> 1%",
"last 2 versions",
"ie >= 10"
]
}
複製程式碼
總結
這篇不多,就做了三件事,eslint、babel、postcss。
下一篇我們將建立專案檔案、目錄架構 - 從零開始做Vue前端架構(3)