webpack自动打css前缀,webpack配置:less/sass文件打包和分离、自动处理css前缀、消除未使用的css及完整的webpack.config.js文件...

一、less文件打包和分离

1、要使用less,首先使用npm安装less服务;还需要安装Less-loader用来打包使用。

npm install less --save-dev

npm install less-loader --save-dev

2、在module中配置

{

test:/\.less$/,

use: [{

loader:"style-loader"},{

loader:"css-loader"},{

loader:"less-loader"}]

}

3、在html中编写一个div,在css中新建一个less文件

@base:yellowgreen;

#leesBox{

width:300px;

height:200px;

background: @base;

}

4、引入到index.js中

import less from './css/black.less';

5、使用webpack进行打包,输入npm run server 查看效果

02be8a8edae845db910812af641783a2.png

00d964bf6bfe9b4335727778d0a4fa59.png

6、less分离

先配置

{

test:/\.less$/,

use:extractTextPlugin.extract({

use:[{

loader:'css-loader'},{

loader:'less-loader'}],

fallback:'style-loader'})

}

再webpack打包,然后lessBox效果正常显示。之前跟在link后面的style样式没有了,我们在看index.css,发现less的样式进了index.css里面去了

b00af75a1707725e8a676f5551596eab.png

a31d0ab96a626f903e4fef7acabb3141.png

二、sass文件打包和分离

1、安装:因为sass-loader依赖于node-sass,所以需要先安装node-sass

npm install node-sass --save-dev

npm install sass-loader --save-dev

其他与less方式基本一致,将原来的less改成sass即可。

三、自动处理css前缀

为了浏览器的兼容性,有时候我们必须加入-webkit、-ms、-o、-moz这些前缀。目的就是让我们写的页面在每个浏览器中都可以顺利运行。

1、安装

npm i postcss-loader autoprefixer --save-dev

2、在根目录新建一个postcss.config.js文件

module.exports ={

plugins: [

require('autoprefixer')

]

}

这就是对postCSS一个简单的配置,引入了autoprefixer插件。让postCSS拥有添加前缀的能力,它会根据 can i use 来增加相应的css3属性前缀。

3、配置

{

test:/\.css$/,

use:extractTextPlugin.extract({

fallback:"style-loader",

use:[

{loader:"css-loader",options:{importLoader:1}},"postcss-loader"]

})

}

4、输入webpack进行打包,最终效果。css文件里面加了浏览器前缀

337aab85555e4d2605d9308082a03724.png

677fe58db4e3baa97195c4efb06a498b.png

四、消除未使用的CSS

使用PurifyCSS可以大大减少CSS冗余

1、安装

npm install purifycss-webpack purify-css --save-dev

2、引入glob,因为我们需要同步检查html模板,所以我们需要引入node的glob对象使用。

在webpack.config.js文件头部引入glob、引入purifycss-webpack

const glob = require('glob');const PruifyCSSPlugin = require('purifycss-webpack');

3、配置

newPruifyCSSPlugin({

paths:glob.sync(path.join(__dirname,'src/*.html'))//src下所有的html

})

4、配置好后,我们可以在css文件里,故意写一些不用的内容,使用webpack打包后,会自动去掉这些多余的内容

bc166b7e27e7a798081b0f59291f9cb8.png

e66f40e8a67d9c5725aaccca28a44e86.png

我们加了无用的name样式,打包出来,发现没有,这就对了。

五、完整的webpack.config.js配置文件

附上本次完整的配置文件

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:[newuglify(),newhtmlPlugin({

minify:{

removeAttributeQuotes:true},

hash:true,

template:'./src/index.html'}),new extractTextPlugin('/css/index.css'),newPruifyCSSPlugin({

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服务

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值