webpack簡(jiǎn)單配置,路由配置幅虑,接口攔截配置丰滑,基本文件配置

新建項(xiàng)目

? 項(xiàng)目腳手架搭建? react

?? ? 相關(guān)文件

? ? ? ? webpack.config.js

?? ? ? ? ? 使用相關(guān)插件

? ? ? ? ? ? ? path

? ? ? ? ? ? ? html-webpack-plugin

? ? ? ? ? ? ? ? html文件處理插件

? ? ? ? ? ? ? clean-webpack-plugin

? ? ? ? ? ? ? ? 清除上次打包文件插件

? ? ? ? ? ? ? copy-webpcak-plugin

?? ? ? ? ? ? ? ? 打包時(shí)需要復(fù)制的相關(guān)文件的插件(比如一些報(bào)表文件模版)

? ? ? ? ? ? ? speed-measure-webpack-plugin

?? ? ? ? ? ? ? ? 速度測(cè)量插件? (const? SpeedMeasurePlugin=require("speed-measure-webpack-plugin");? const?smp=newSpeedMeasurePlugin();? const?webpackConfig=smp.wrap({})

? ? ? ? ? ? ? happypack

? ? ? ? ? ? ? ? 一些loader進(jìn)程管理

? ? ? ? ? ? ? 打包配置

?? ? ? ? ? ? ? ? {

mode:’環(huán)境設(shè)置’,

? entry:‘入口文件設(shè)置’倒庵,

? output:{path:path.resovle(__dirname,’dist’),filename:’main_[hash].js’,publicPath:’根據(jù)環(huán)境設(shè)置url前綴(接口域名代理字符)’}褒墨,

? models:{rules:[

說明:{

? test:‘正則匹配/.js/’

? exclude:‘排除。擎宝。貌亭。(可以設(shè)置后綴名或者文件路徑)’

? include:‘包含。认臊。圃庭。(可以設(shè)置后綴名或者文件路徑)’

? loader:‘loader設(shè)置url-loader’或者use:[loader:‘? ’,oprios:{plugins:[插件設(shè)置]或者其他設(shè)置}](use[可以設(shè)置happy pack插件:happypack/loader ? id = ‘happypack插件配置的id’])

]}失晴,(loader配置)

? ? (loader配置順序:如剧腻,url-loader,babel-loader,style-loader,css-loader,file-loader)

? resolve:{extensions:[’js’,’json’,’jsx’,’css’]},(在導(dǎo)入沒有帶后綴名的文件時(shí)涂屁,嘗試在文件加入上面后綴名訪問)

? plugins:[]? ? (插件配置)

}

? ? ? ? bable.config.js

?? ? ? ? ? 相關(guān)插件? (用法function(api){ api.cache(true);

? ? ? ? ? ? ? presets:[

[‘@babel/preset-env’书在,

?? ? ? ? ? ? ? ? {‘targets’:{’browsers’:["last 2 versions”,"safari >= 7”,”ie >=9”,”chrome >=49”]}}

],

?? ? ? ? ? ? ? ? '@babel/preset-react’

? ? ],

? ? ? ? ? ? ? return { “plugins”:{

? ? ? ["@babel/plugin-proposal-decorators", { "legacy": true }],(類裝飾器? 舊:設(shè)置legacy時(shí)需要loose支持拆又,有順序)

?? ? ? ? ? ? ? @babel/plugin-proposal-dynamic-import,import處理插件)

?? ? ? ? ? ? ? @bacel/plugin-transform-runtime儒旬,(將helper和polypill都改為從一個(gè)統(tǒng)一的地方引入,引入的對(duì)象和全局變量完全隔離)

["@babel/plugin-proposal-class-properties", { "loose" : true }],(解析類的屬性)

?? ? ? ? ? ? ? @ babel / plugin-proposal-logic-assignment-operators,(如出現(xiàn)短路時(shí)的邏輯處理插件)

?? ? ? ? ? ? ? [''@babel/plugin-proposal-optional-chaining'',{loose:false}],(可選鏈優(yōu)化? 深層嵌套優(yōu)化處理插件)? ? ? ? ? ? ? ?

?? ? ? ? ? ? ? [''@babel/plugin-proposal-pipeline-operator'',{proposal:'minimal’}],(解析管道運(yùn)算符)

?? ? ? ? ? ? ? ['@babel/plugin-proposal-nullish-coalescing-operator'',{loose:false}]帖族,(刪除無效的合并運(yùn)算符)

? ? ? @ babel / plugin-proposal-do-expressions,(插件執(zhí)行一個(gè)do{多個(gè)條件語(yǔ)句}表達(dá)式栈源,最終語(yǔ)句完成值是該do表達(dá)式的完成值)

? ? ? @ babel / plugin-transform-spread,(擴(kuò)展運(yùn)算符轉(zhuǎn)換插件)

? ? ? ["@babel/plugin-proposal-object-rest-spread", { "loose": true, "useBuiltIns": true }],(轉(zhuǎn)擴(kuò)展運(yùn)算插件)

? ? ? ["@babel/plugin-transform-object-assign”],(插件支持Object.assign())

? ? [“import”,{libraryName: 'antd',libraryDirectory: 'es',style: true,}](and按需引入設(shè)置)

} }})

? ? ? ? package.json

?? ? ? ? ? 項(xiàng)目打包/啟動(dòng)相關(guān)插件

? ? ? ? ? ? ? webpack-dev-server

? ? ? ? ? ? ? webpack-cli

? ? ? ? ? ? ? webpack-merga

? ? ? cross-env? (插件解決window系統(tǒng)兼容問題)

? ? ? ? postcss.config.js

? ? ? ? ? ? 可以做相關(guān)的瀏覽器版本兼容配置

? ? ? ? ? ? 相關(guān)插件

?? ? ? ? ? ? ? autoprefixer({prefer:false驮肉,plugin:loader=>[request(autoprefixer)({browsers:[‘ie’>=9,’Safari’>=6]})]}})

? ? ? public文件

? ? ? ? 一些公用文件存放

? ? ? dist文件(打包后的文件)

? ? ? src文件(項(xiàng)目主文件)

? ? ? ? assets文件(存放圖片等資源)

? ? ? ? api相關(guān)文件(api接口處理文件)

? ? ? ? modules文件或者pages文件

? ? ? (store文件)

? ? ? ? utils文件

? ? ? ? ? request.js(axios攔截文件)

?? ? ? ? ? ? (相關(guān)插件)axios、history(使用:引入createBrowserHistory(現(xiàn)代瀏覽器使用)艰亮、createMemoryHistory(手機(jī)端使用))createBrowserHistory({basename:‘基鏈接(環(huán)境域名)’,forceRefresh:true? /是否強(qiáng)制刷新整個(gè)頁(yè)面})

? ? ? ? ? ? ? ? axios.defaults.withCredentials = true;? //設(shè)置cross跨域并設(shè)置訪問權(quán)限允許跨域攜帶cookie信息

? ? ? ? ? ? ? ? 攔截設(shè)置:

? axios.interceptors.request.use(function?(config)?{returnconfig;(請(qǐng)求參數(shù)攔截處理挣郭,如:請(qǐng)求頭添加token或者其他(config.[‘headers’].token=......))},?function?(error)?{returnPromise.reject(error);});

?? ? ? ? ? ? ? ? ? axios.interceptors.response.use(function?(response)?{returnresponse;(請(qǐng)求成功返回參數(shù)錯(cuò)誤處理迄埃,如:返回不同狀態(tài)碼跳轉(zhuǎn)不同頁(yè)面,token失效重登錄......)},?function?(error)?{returnPromise.reject(error);(請(qǐng)求失敗錯(cuò)誤處理兑障,如:登錄失效侄非,跳轉(zhuǎn)重新登錄)});

? ? ? ? ? history.js(路由環(huán)境配置)

?? ? ? ? ? ? 配置原理(根據(jù)package.json文件里面配置的NODE_ENV==‘production’或者’development’加上webpack.config.js里面的Deserver.proxy設(shè)置的代理key來配置開發(fā)或者正式環(huán)境的url前綴蕉汪,配合createBrowserHistory.basename設(shè)置)

? ? ? ? ? until.js? ? (公用方法文件)

? ? ? ? index.js(全局引入,如:utils.request彩库、@babel/polyfill肤无、assets/.peg、路由前綴在路由上全局配置)

? ? ? ? routers.js? (路由文件)

? ? ? ? app.js(正經(jīng)的組建文件骇钦,設(shè)置頁(yè)面大致框架和路由跳轉(zhuǎn)設(shè)置宛渐,也能做一些全局設(shè)置)

? ? ? ? index.html(可以做全局引入三方資源)

————————————————————————————————————————

這里的webpack配置是根據(jù)webpack4.30版本配置,算不上目前最新版本眯搭,配置也比較繁瑣窥翩,里面用了happypack快速啟動(dòng)快速打包的多線程插件可能會(huì)跟你項(xiàng)目的一些配置方式出現(xiàn)沖突。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鳞仙,一起剝皮案震驚了整個(gè)濱河市寇蚊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棍好,老刑警劉巖仗岸,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異借笙,居然都是意外死亡扒怖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門业稼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盗痒,“玉大人,你說我怎么就攤上這事低散「┑耍” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵熔号,是天一觀的道長(zhǎng)稽鞭。 經(jīng)常有香客問我,道長(zhǎng)跨嘉,這世上最難降的妖魔是什么川慌? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮祠乃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兑燥。我一直安慰自己亮瓷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布降瞳。 她就那樣靜靜地躺著嘱支,像睡著了一般蚓胸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上除师,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天沛膳,我揣著相機(jī)與錄音,去河邊找鬼汛聚。 笑死锹安,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的倚舀。 我是一名探鬼主播叹哭,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痕貌!你這毒婦竟也來了风罩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舵稠,失蹤者是張志新(化名)和其女友劉穎超升,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哺徊,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡室琢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唉工。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片研乒。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淋硝,靈堂內(nèi)的尸體忽然破棺而出雹熬,到底是詐尸還是另有隱情,我是刑警寧澤谣膳,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布竿报,位于F島的核電站,受9級(jí)特大地震影響继谚,放射性物質(zhì)發(fā)生泄漏烈菌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一花履、第九天 我趴在偏房一處隱蔽的房頂上張望芽世。 院中可真熱鬧,春花似錦诡壁、人聲如沸济瓢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旺矾。三九已至蔑鹦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箕宙,已是汗流浹背嚎朽。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柬帕,地道東北人哟忍。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像雕崩,于是被迫代替她去往敵國(guó)和親魁索。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • 對(duì)于之前webpack使用與配置(上)的補(bǔ)充 使用typescript時(shí)需要在根目錄下創(chuàng)建一個(gè)tsconfig.j...
    XJBT閱讀 495評(píng)論 0 2
  • 一:理解 babel之配置文件.babelrc 基本配置項(xiàng) 1. 什么是babel? 它是干什么用的盼铁? ES6是2...
    CodeMT閱讀 874評(píng)論 0 2
  • webpack4筆記 快速了解幾個(gè)基本的概念 mode 模式 通過選擇 development, producti...
    假裝沒昵稱閱讀 337評(píng)論 0 1
  • 一粗蔚、webpack介紹 webpack官方文檔 webpack是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊...
    Linyqs閱讀 191評(píng)論 0 0
  • 一鹏控、Webpack基本配置及使用 1、安裝本地Webpack 2肤寝、 Webpack可以0配置 打包工具 -> 輸出...
    HHHxxx_Hx閱讀 267評(píng)論 0 0