摘要:配置圖片路徑出錯(cuò)問題項(xiàng)目在開發(fā)環(huán)境下工作正常,當(dāng)打包后圖片不見了,檢查元素后發(fā)現(xiàn)路徑出錯(cuò)了。打包后文件目錄如下可以看到背景圖片的路徑應(yīng)該是而實(shí)際卻是,找到原因后就好解決了方法一查看目錄下的配置,圖片文件會(huì)經(jīng)過處理。
webpack配置-圖片路徑出錯(cuò) 問題
項(xiàng)目在開發(fā)環(huán)境下工作正常,當(dāng)打包后圖片不見了,檢查元素后發(fā)現(xiàn)路徑出錯(cuò)了。
圖片路徑是這樣:background: url(/static/img/bg_camera_tip.bd37151.png),但該路徑下文件并不存在。
打包后文件目錄如下:
可以看到背景圖片的路徑應(yīng)該是../../static而實(shí)際卻是/static,找到原因后就好解決了
查看build目錄下webpack.base.conf.js的配置,圖片文件會(huì)經(jīng)過url-loader處理。
module: { rules: [ ... { test: /.(png|jpe?g|gif|svg)(?.*)?$/, loader: "url-loader", options: { limit: 10000, name: utils.assetsPath("img/[name].[hash:7].[ext]") } }, ... ] }
它的作用是當(dāng)文件大小小于limit限制時(shí)會(huì)返回一個(gè)base64串,其實(shí)就是把圖片資源編碼為base64串放在CSS文件里,這樣就可以減少一次網(wǎng)絡(luò)請(qǐng)求,因?yàn)槊恳粡垐D片都是需要從服務(wù)端去下載的。但是如果文件太大了就會(huì)導(dǎo)致base64串很長(zhǎng),那放在CSS文件里面就會(huì)導(dǎo)致文件很大,CSS的文件下載時(shí)間變長(zhǎng),就得不償失了,所以會(huì)有一個(gè)limit參數(shù),在這個(gè)范圍內(nèi)的才會(huì)被轉(zhuǎn)成base64串,它的單位是字節(jié)。對(duì)于這個(gè)問題,該loader還提供了一個(gè)publicPath參數(shù),目的是修改引用的圖片地址,默認(rèn)是當(dāng)前路徑,那直接改它就可以了,即在options節(jié)點(diǎn)下添加一個(gè)參數(shù)publicPath: "../../"。
module: { rules: [ ... { test: /.(png|jpe?g|gif|svg)(?.*)?$/, loader: "url-loader", options: { limit: 10000, publicPath: "../../", //你實(shí)際項(xiàng)目的引用地址前綴 name: utils.assetsPath("img/[name].[hash:7].[ext]") } }, ... ] }方法二
webpack.base.conf.js里還有一條規(guī)則,每一個(gè)vue文件都會(huì)經(jīng)過vueLoaderConfig處理
module: { rules: [ { test: /.vue$/, loader: "vue-loader", options: vueLoaderConfig }, ... ] }
vueLoaderConfig位于build/vue-loader.conf.js,它又調(diào)用了build/utils.js的cssLoaders的方法。
if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: "vue-style-loader" }) }
如果是生產(chǎn)環(huán)境options.extract值為true,會(huì)調(diào)用這個(gè)ExtractTextPlugin插件做處理,它的作用是抽離項(xiàng)目中引用的樣式文件到一個(gè)獨(dú)立的CSS文件中,這樣就可以一次加載所有的CSS文件,相當(dāng)于CSS文件并行加載,可以減少網(wǎng)絡(luò)請(qǐng)求次數(shù),更多優(yōu)點(diǎn)及使用可以查看ExtractTextWebpackPlugin。回到這個(gè)問題,它還有一個(gè)參數(shù)就是publicPath,可以覆蓋所指定的loader的publicPath配置,那么就跟前面的配置一樣,可以給所有的loader統(tǒng)一配置引用文件的路徑地址。
另外這里的user:loader實(shí)際上是返回一系列的loader的集合,cssLoaders的返回是
return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders("less"), sass: generateLoaders("sass", { indentedSyntax: true }), scss: generateLoaders("sass"), stylus: generateLoaders("stylus"), styl: generateLoaders("stylus") }
這也就是即便你沒有在webpack.base.conf.js中配置sass-loader也能使用SASS語(yǔ)法的原因。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94605.html
摘要:了解什么是官方文檔是這樣介紹的點(diǎn)我了解官方文檔簡(jiǎn)單的來(lái)說,可以看做是模塊打包機(jī)它做的事情是,分析你的項(xiàng)目結(jié)構(gòu),找到模塊以及其它的一些瀏覽器不能直接運(yùn)行的拓展語(yǔ)言,等,并將其轉(zhuǎn)換和打包為合適的格式供瀏覽器使用。 了解webpack 什么是webpack 官方文檔是這樣介紹的:點(diǎn)我了解官方文檔 簡(jiǎn)單的來(lái)說,WebPack可以看做是模塊打包機(jī):它做的事情是,分析你的項(xiàng)目結(jié)構(gòu),找到JavaSc...
摘要:徹底分離源文件目錄和生成文件目錄使用生成出來(lái)的頁(yè)面可以很安心地跟打包好的其它資源放到一起,相對(duì)于另起一個(gè)目錄專門存放頁(yè)面文件來(lái)說,整個(gè)文件目錄結(jié)構(gòu)更加合理如何利用生成頁(yè)面生成頁(yè)面主要是通過來(lái)實(shí)現(xiàn)的,下面來(lái)介紹如何實(shí)現(xiàn)。 本文首發(fā)于Array_Huang的技術(shù)博客——實(shí)用至上,非經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載。原文地址:https://segmentfault.com/a/119000000712...
摘要:構(gòu)建構(gòu)建就是把源代碼轉(zhuǎn)換成發(fā)布到線上的可執(zhí)行代碼,包括如下內(nèi)容。自動(dòng)刷新監(jiān)聽本地源代碼的變化,自動(dòng)重新構(gòu)建刷新瀏覽器。自動(dòng)發(fā)布更新完代碼后,自動(dòng)構(gòu)建出線上發(fā)布代碼并傳輸給發(fā)布系統(tǒng)。將文件放入到項(xiàng)目中,在中新建一個(gè)放字體圖標(biāo)的文件夾。 項(xiàng)目地址 github.com/wudiufo/Web… 知識(shí)點(diǎn)概覽: Loader,HMR ,Create React App, Caching, Plug...
webpack基于node,因此想要學(xué)習(xí)webpack首先要安裝node。webpack4要安裝node8.2以上版本。 1、安裝webpack 為什么選擇本地安裝,主要是由于以后介紹熱更新這一部分不會(huì)報(bào)錯(cuò),如果全局安裝熱更新就會(huì)報(bào)錯(cuò),以本部分為基礎(chǔ)依次介紹,保證各部分不會(huì)出錯(cuò)。 mkdir webpack-test cd webpack-test npm init //初始化npm,都選擇默認(rèn),...
摘要:配置完成后就可以使用來(lái)打包代碼了。值得注意的是會(huì)刪除所有無(wú)作用代碼也就是說那些包裹在這些全局變量下的代碼塊都會(huì)被刪除這樣就能保證這些代碼不會(huì)因發(fā)布上線而泄露。默認(rèn)會(huì)從項(xiàng)目的根目錄下引入這些文件。 命令使用 npm install webpack -g 作為全局安裝, 在任意目錄使用 npm install webpack --save-dev 作為項(xiàng)目依賴安裝 np...
閱讀 4624·2021-09-26 09:55
閱讀 1367·2019-12-27 12:16
閱讀 887·2019-08-30 15:56
閱讀 1905·2019-08-30 14:05
閱讀 992·2019-08-30 13:05
閱讀 1269·2019-08-30 10:59
閱讀 1442·2019-08-26 16:19
閱讀 1887·2019-08-26 13:47