webpack的css處理


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         ]

 二.提取css ----- 使用插件

  安裝:

 npm install --save-dev extract-text-webpack-plugin

使用:

 1 const ExtractTextPlugin = require("extract-text-webpack-plugin");
 2 
 3 module.exports = {
 4   module: {
 5     rules: [
 6       {
 7         test: /\.css$/,
 8         use: ExtractTextPlugin.extract({
 9           fallback: "style-loader",
10           use: "css-loader"
11         })
12       }
13     ]
14   },
15   plugins: [
16     new ExtractTextPlugin("styles.css"),
17   ]
18 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM