一、要使用less,首先使用npm安装less服务;还须要安装Less-loader用来打包使用。css
npm install less --save-dev npm install less-loader --save-dev
二、在module中配置html
{ test: /\.less$/, use: [{ loader: "style-loader" },{ loader: "css-loader" },{ loader: "less-loader" }] }
三、在html中编写一个div,在css中新建一个less文件node
<div id="leesBox"></div>
@base:yellowgreen;
#leesBox{
width:300px;
height:200px;
background: @base;
}
四、引入到index.js中react
import less from './css/black.less';
五、使用webpack进行打包,输入npm run server 查看效果webpack
六、less分离css3
先配置web
{ test: /\.less$/, use:extractTextPlugin.extract({ use:[{ loader:'css-loader' },{ loader:'less-loader' }], fallback:'style-loader' }) }
再webpack打包,而后lessBox效果正常显示。以前跟在link后面的style样式没有了,咱们在看index.css,发现less的样式进了index.css里面去了npm
一、安装:由于sass-loader依赖于node-sass,因此须要先安装node-sass数组
npm install node-sass --save-dev npm install sass-loader --save-dev
其余与less方式基本一致,将原来的less改为sass便可。浏览器
为了浏览器的兼容性,有时候咱们必须加入-webkit、-ms、-o、-moz这些前缀。目的就是让咱们写的页面在每一个浏览器中均可以顺利运行。
一、安装
npm i postcss-loader autoprefixer --save-dev
二、在根目录新建一个postcss.config.js文件
module.exports = { plugins: [ require('autoprefixer') ] }
这就是对postCSS一个简单的配置,引入了autoprefixer插件。让postCSS拥有添加前缀的能力,它会根据 can i use 来增长相应的css3属性前缀。
三、配置
{ test:/\.css$/, use:extractTextPlugin.extract({ fallback:"style-loader", use:[ {loader:"css-loader",options:{importLoader:1}}, "postcss-loader" ] }) }
四、输入webpack进行打包,最终效果。css文件里面加了浏览器前缀
使用PurifyCSS能够大大减小CSS冗余
一、安装
npm install purifycss-webpack purify-css --save-dev
二、引入glob,由于咱们须要同步检查html模板,因此咱们须要引入node的glob对象使用。
在webpack.config.js文件头部引入glob、引入purifycss-webpack
const glob = require('glob'); const PruifyCSSPlugin = require('purifycss-webpack');
三、配置
new PruifyCSSPlugin({ paths:glob.sync(path.join(__dirname,'src/*.html'))//src下全部的html
})
四、配置好后,咱们能够在css文件里,故意写一些不用的内容,使用webpack打包后,会自动去掉这些多余的内容
咱们加了无用的name样式,打包出来,发现没有,这就对了。
附上本次完整的配置文件
const path = require('path'); const uglify = require('uglifyjs-webpack-plugin'); const htmlPlugin = require('html-webpack-plugin'); const extractTextPlugin = require("extract-text-webpack-plugin"); const glob = require('glob'); const PruifyCSSPlugin = require('purifycss-webpack'); module.exports={ //打包调试
devtool:'eval-source-map', //入口文件的配置项
entry:{ entry:'./src/index.js' }, //出口文件的配置项
output:{ //输出的路径,用了Node语法
path:path.resolve(__dirname,'dist'), //输出的文件名称
filename:'bundle.js', publicPath:'./' }, //模块:例如解读CSS,图片如何转换,压缩
module:{ rules:[ { test:/\.css$/, use:extractTextPlugin.extract({ fallback:"style-loader", use:"css-loader" }) },{ test:/\.(png|jpg|gif)/, use:[{ loader:'url-loader', options:{ limit:500000 } }] },{ test:/\.(htm|html)$/i, use:['html-withimg-loader'] },{ test:/\.(jsx|js)$/, use:{ loader:'babel-loader', options:{ presets:["es2015","react"] } }, exclude:/node_modules/ },{ test: /\.less$/, use:extractTextPlugin.extract({ use:[{ loader:'css-loader' },{ loader:'less-loader' }], fallback:'style-loader' }) },{ test:/\.css$/, use:extractTextPlugin.extract({ fallback:"style-loader", use:[ {loader:"css-loader",options:{importLoader:1}}, "postcss-loader" ] }) } ] }, //插件,用于生产模版和各项功能
plugins:[ new uglify(), new htmlPlugin({ minify:{ removeAttributeQuotes:true }, hash:true, template:'./src/index.html' }), new extractTextPlugin('/css/index.css'), new PruifyCSSPlugin({ paths:glob.sync(path.join(__dirname,'src/*.html'))//src下全部的html
}) ],// 插件,多个插件,因此是数组 //配置webpack开发服务功能
devServer:{ contentBase:path.resolve(__dirname,'dist'),//本地服务器所加载的页面所在的目录
host:'192.168.118.221', compress:true, port:8081 }// 配置webpack服务
}