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 }