1. 程式人生 > >webpack的css處理

webpack的css處理

sin blue singleton span .config 優先 性能 mon 生成

webpack打包處理css的時候需要兩個loader:

style-loader 和css-loader

安裝:

1 npm install style-loader css-loader --save-dev

style-loader:負責將打包生成的代碼嵌入到html頁面中.

css-loader:是允許將css文件引入到.js文件中;

簡單的打包css的webpack.config.js文件:

 1 var path = require(‘path‘)
 2 module.exports = {
 3     entry:{
 4         app:‘./src/app.js‘
5 }, 6 output: { 7 path:path.resolve(__dirname,‘dist‘), 8 publicPath: "./dist/", 9 filename: "[name].bundle.js" 10 }, 11 module:{ 12 rules:[ 13 { 14 test:/\.css$/, 15 use:[ 16 { 17 loader:‘style-loader‘,//在html頁面中插入<style>標簽;
18 // options:{ 19 // insertInto:‘#app‘,//將打包成的style標簽插入app 20 // singlleton:true,//只生成一個style標簽 21 // transfrom:‘./css.transform.js‘//css的變形,它會在打包生成的標簽插入html頁面的時候生效,因此還可以獲取瀏覽器的相關信息 22 //
} 23 // loader:‘style-loader/url‘//會在頭部插入<link>標簽//如果打包多個文件會生成 多個link,影響性能,推薦使用上一種; 24 //loader:"style-loader/useable"//控制樣式插入或者不插入頁面中; 25 26 }, 27 { 28 loader:‘css-loader‘, 29 // loader:‘file-loader‘, 30 options:{ 31 minimize:true, 32 modules:true//開啟了modules,在js中引入css文件以後,就可以導出css文件,點.出css文件中的內容; 33 } 34 } 35 ] 36 } 37 ] 38 } 39 }

style-loader:有一個options配置,包括:

  1.inserAt:形成的標簽插入的位置;

  2.insertInto:插入到dom

  3.singleton:true/false是否只使用一個style標簽

  4.transform:轉化,是在瀏覽器環境下生效,插入頁面之前;可以進行和瀏覽器相關的頁面樣式操作

如:css.transform.js文件:

1 module.exports = function (css) {
2     console.log(css)
3     console.log(window.innerWidth)
4     if(window.innerWidth >= 768){
5         return css.replace(‘red‘,‘green‘)
6     }else{
7         return css.replace(‘red‘,‘orange‘)
8     }
9 }

style-loader的兩個同類:

  1.style-loader/url:是將打包的代碼以Link的形式插入到頁面中;

  2.style-loader/useable:是否允許插入引入的文件,在.js中使用

css的options配置項:

  1.alias(解析的別名)

  2.importLoader(@import)

  3.Minimize(是否壓縮)

  4.modules(啟用css-modules)

css-Modules的參數:

  1.:local

  2.global

  3.compose

  4.compose...from path

compose使用代碼:

1 .box  {
2     composes: bigBox from ‘./common.css‘;//為了優先級,默認將引入的寫入到括號中的第一行
3     width: 200px;
4     height: 200px;
5     background: skyblue;
6     border-radius:5%;
7 }

less與sass配置:

安裝:

1 npm install less-loader less --save-dev
2 npm install sass-loader node-sass --save-dev

配置代碼:

 1  rules:[
 2             {
 3                 test:/\.less$/,
 4                 use:[
 5                     {
 6                         loader:‘style-loader‘,//在html頁面中插入<style>標簽;
 7                         // options:{
 8                         //     insertInto:‘#app‘,//將打包成的style標簽插入app
 9                         //     singlleton:true,//只生成一個style標簽
10                         //     transfrom:‘./css.transform.js‘//css的變形,它會在打包生成的標簽插入html頁面的時候生效,因此還可以獲取瀏覽器的相關信息
11                         // }
12                        // loader:‘style-loader/url‘//會在頭部插入<link>標簽//如果打包多個文件會生成 多個link,影響性能,推薦使用上一種;
13                         //loader:"style-loader/useable"//控制樣式插入或者不插入頁面中;
14 
15                     },
16                     {
17                         loader:‘css-loader‘,
18                         // loader:‘file-loader‘,
19                         options:{
20                             minimize:true,
21                             modules:true//開啟了modules,在js中引入css文件以後,就可以導出css文件,點.出css文件中的內容;
22                         }
23                     },
24                     {
25                         loader:‘less-loader‘
26                     }
27                 ]
28             }
29         ]

webpack的css處理