利用webpack打包其它資原始檔
文章目錄
webpack
除了能夠打包css
資原始檔外,其還可以打包眾多的其它型別的檔案。
這裡為了減少重複程式碼的編寫,所以說此處是在上一篇文章中程式碼的基礎上所做的修改,上一篇文章的地址如下:
打包sass檔案
webpack
sass-loader
,css-loader
,style-loader
來處理.scss
檔案的打包工作。而其中的sass-loader
又依賴於node-sass
,所以說我們還要新增node-sass
依賴。
專案結構
修改原始碼
site1.scss
檔案
在css
資料夾中新增site1.scss
檔案,其原始碼如下:
$color:blue;
#v2{
border:1px solid $color;
}
main.js
檔案
在main.js
檔案檔案中新增site1.scss
資原始檔的引入。
require('../assets/css/site1.scss');
webpack.config.js
檔案
在webpack.config.js
檔案中的loaders
關鍵字下新增下面程式碼:
,{
test:/\.scss$/
,loader:'style-loader!css-loader!sass-loader'
}
package.json
檔案
將控制檯的游標定位於專案根目錄,在其中輸入下述指令,將其中的依賴新增到package.json
檔案中。
cnpm i node-sass sass-loader css-loader style-loader --save-dev
執行結果
在控制檯中輸入下述指令,開啟瀏覽器,即能訪問打包後的結果。
如上圖所示,第二個文字框成功的變成了藍色,這說明我們的sass
打包正確。
打包less檔案
webpack
打包less
檔案所需要的依賴包為css-loader
、style-loader
、less-loader
,其中less
為less-loader
所需要的依賴包。
修改原始碼
site2.less
檔案:
在site2.less
中新增如下原始碼,同時將所有文字框的邊框寬度變為2px
@color:green;
#res{
border:2px solid @color;
}
main.js
檔案:
在main.js
中新增原始碼:
require('../assets/css/site2.less');
webpack.config.js
檔案:
在webpack.config.js
中的loaders
關鍵字下新增原始碼:
,{
test:/\.less/ //打包.less檔案
,loader:'style-loader!css-loader!sass-loader!less-loader'
}
package.json
檔案
將控制檯的游標定位於專案根目錄下,執行下面指令將css-loader
、style-loader
、less-loader
以及less
依賴包打入到package.json
檔案中。
cnpm i less less-loader style-loader css-loader --save-dev
執行結果
在控制檯中執行下列命令:
cnpm i
webpack
其展示結果為:
打包url中的資源
webpack
打包url
網路資源所需要的依賴包為url-loader
、file-loader
。
修改原始碼
site.css
原始碼:
在該檔案中新增下述程式碼,同時在相應目錄中新增圖片檔案。
#bg{
width: 200px;
height: 200px;
background-image: url("../imgs/png/e6.png");
}
index.html
原始碼:
在該檔案中新增下述程式碼:
<hr>
<div id="bg"></div>
package.json
原始碼:
將控制檯中的游標定位於專案根目錄中,執行下述命令列指令將url-loader
、file-loader
新增到package.json
中
npm i url-loader file-loader --save-dev
由於依賴包版本的不一致性,這導致有的版本的依賴包不能夠正常執行,所以在這裡更新一下完整原始碼:
{
"name": "csspackage",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"css-loader": "^1.0.1",
"file-loader": "^0.11.1",
"less": "^3.8.1",
"less-loader": "^4.1.0",
"node-sass": "^4.10.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"url-loader": "^0.5.8"
}
}
webpack.config.js
原始碼:
在該檔案的loaders
關鍵字下新增下述程式碼:
,{
test:/\.(png|jpg|gif|ttf)$/ //打包url請求的資原始檔
,loader:'url-loader?limit=20000' //limit表示圖片的大小為40k是臨界值,小於20k的圖片均被
// 打包到build.js中去,此時圖片的顯示就會很快,這是一個優化操作。
}
執行結果
由上圖可知,我們打包的url
圖片資源已經可以正常顯示了,由於該圖片資源小於20k,因而其圖片資源被以base64
位位元組碼的形式打到了build.js
中,其可以加快圖片在頁面的展示速度。