wepack從0開始配置vue環(huán)境之二: 線上部署配置優(yōu)化

wepack從0開始配置vue環(huán)境之一:基礎配置
webpack之三集成vuex和vue-Router

  • 調(diào)整目錄結(jié)構

新建/build存放webpack配置文件
build目錄下新建文件:

  1. webpack.config.base.js(以下簡稱base) -> 基礎配置文件
    復制/webpack.config.js文件到base, 刪除isDev判斷環(huán)境的代碼, 刪除所有的插件
  2. webpack.config.client.js(以下簡稱client) -> 客戶端配置文件
    使用webpack-merge: cnpm i webpack-merge -D, 擴展base文件
    復制/webpack.config.js文件到client, 引入base, 刪掉config, 引入webpack-merge, 聲明一個config, 在兩個不同的環(huán)境使用merge配置不同的參數(shù),優(yōu)化靜態(tài)資源目錄等
  3. 修改package.json的script命令
"build": "cross-env NODE_ENV=prodution npm run clean && webpack --config build/webpack.config.client.js",
    "dev": "cross-env NODE_ENV=development webpack-dev-server --config build/webpack.config.client.js",
  1. 調(diào)整業(yè)務代碼存放文件的目錄結(jié)構,每個部分單獨創(chuàng)建文件夾,將src文件夾更名為client
  • vue-loader的配置

  1. 新建/build/vue-loader.config.js, module.exports 一個function, 為了判斷環(huán)境
  2. vue-loader配置項:
    -- preserveWhitespace: false -> template里一行最后多余的空格會導致編譯時出問題, 這個參數(shù)設置true可以忽略空格
    -- extractCSS: true -> 將.vue文件里的css單獨打包成css文件
    -- cssModules{} -> css模塊化, cssModules.localIdentName和camelCase: true(將css中用 '-' 連接的轉(zhuǎn)化為駝峰)
    cssModules: {
      localIdentName: '[path]-[name]--[local]--[hash:base64:5]',
      camelCase: true
    } 
在.vue文件中使用
1.
<template>
  <div :class="a.header">我是header</div>
</template>
<style lang="stylus" scoped module="a">
.header
  color: #f00
</style>
2.
<template>
  <div :class="$style.header">我是header</div>
</template>
<style lang="stylus" scoped module>
.header
  color: #f00
</style>

css-loader也可以定義cssModules, 定義之后就必須以模塊的方式引入css, 使用也類似rn里的css用 '.'訪問

{
  loader: 'css-loader',
  options: {
    module: true,
    localIdentName: isDev ? '[path]-[name]--[local]--[hash:base64:5]' : '[name]-[hash:base64:5]'
  }
}

-- hotReload:false -> 禁用熱重載, 這個選項是默認根據(jù)環(huán)境變量改變的, 不需單獨設置
-- loaders: {'docs': docsLoader} -> .vue文件里自定義模塊做自定義loader, 就是類似于<template>, <script>
-- preLoader: {js: zjdeloader} -> 先用這里的loader解析一遍在用webpack里的loader解析

  • eslint的配置

忽略eslint的方法, 忽略某行, 在對應行的末尾寫上 // eslint-disable-line

  1. 安裝模塊:

eslint, eslint-config-standard, eslint-plugin-standard, eslint-plugin-promise, eslint-plugin-import, eslint-plugin-node, eslint-plugin-html
備注* 這些模板全部通過npm安裝

  1. 新建/.eslintrc文件對eslint進行配置, 另eslint識別.vue里的template內(nèi)容, 需要添加eslint-plugin-html
{
  "extends": "standard",
  "plugins": [
    "html"
  ]
}
  1. 在package.json的script中添加lint命令
// 檢查代碼格式錯誤
 "lint": "eslint --ext .js --ext .jsx --ext .vue client/" // `--ext`代表文件后綴, 最后的`client/`代表檢查哪個目錄下的文件
// 修正代碼格式錯誤
"lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue client/"
  • 使用eslint實時檢測代碼格式

安裝模塊: eslint-loader babel-eslint -> webpack的項目要經(jīng)過babel處理, 普通的eslint會有沖突需要在parse選項里使用一下

配置/eslintrc

{
  "extends": "standard",
  "plugins": ["html"],
  "parser": "babel-eslint",
  "rules": "off"    
  }
}

配置webpack.config.base.js, 添加eslint-loader

{
  test: /\.(vue|jsx|js)$/,
  loader: 'eslint-loader',
  exclude: /node_modules/,
  enforce: 'pre' // 在其他loader之前先解析, 不過就不會在進行其他loader解析了
}
  • 編輯器的.editorconfig 配置

說明: 統(tǒng)一編輯器配置的, 因為每個編輯器都有自己的默認配置

  1. 新建/.editorconfig
  2. 配置.editorconfig文件

科普:end_of_line(行結(jié)束符)3種不同的值,
lf -> linux crlf -> win cr -> mac
CRLF 是carriagereturnlinefeed的縮寫仪缸。中文意思是回車換行办成。
LF是line feed的縮寫尺迂,中文意思是換行。
CR是carriagereturn的縮寫, 中文是回車

root = true
[*]
charset = utf-8 // 編碼格式utf-8
end_of_line = lf // 因為線上環(huán)境是linux, 所有都設置成lf
indent_size = 2 // tab縮進格數(shù)
indent_style = space // 空格縮進
insert_final_newline = true // 保存時在最后插入一行空行
trim_trailing_whitespace = true // 清除一行結(jié)尾的空格
  1. 安裝EditorConfig插件
  • git的precommit - 在commit之前進行eslint檢查, 不通過不會提交

安裝模塊: husky -> git hook, 在安裝之前一定要有.git目錄, 安裝之后會自動在.git里生成hook, 在commit之前執(zhí)行 precommit命令

  1. 安裝husky
  2. 在package.json的script里添加precommit命令
"precommit": "npm run lint-fix"
  1. git commit -m "xx", commit之后會先執(zhí)行precommit里的命令, 報錯就不會提交
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衔掸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蛀序,更是在濱河造成了極大的恐慌护侮,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吃挑,死亡現(xiàn)場離奇詭異钝荡,居然都是意外死亡,警方通過查閱死者的電腦和手機舶衬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門埠通,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逛犹,你說我怎么就攤上這事端辱。” “怎么了虽画?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵舞蔽,是天一觀的道長。 經(jīng)常有香客問我码撰,道長喷鸽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任灸拍,我火速辦了婚禮做祝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸡岗。我一直安慰自己混槐,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布轩性。 她就那樣靜靜地躺著声登,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揣苏。 梳的紋絲不亂的頭發(fā)上悯嗓,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音卸察,去河邊找鬼脯厨。 笑死,一個胖子當著我的面吹牛坑质,可吹牛的內(nèi)容都是我干的合武。 我是一名探鬼主播临梗,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稼跳!你這毒婦竟也來了盟庞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汤善,失蹤者是張志新(化名)和其女友劉穎什猖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體红淡,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡不狮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锉屈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荤傲。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡垮耳,死狀恐怖颈渊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情终佛,我是刑警寧澤俊嗽,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站铃彰,受9級特大地震影響绍豁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牙捉,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一竹揍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邪铲,春花似錦芬位、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揽惹,卻和暖如春被饿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搪搏。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工狭握, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疯溺。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓哥牍,卻偏偏與公主長得像毕泌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗅辣,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容