上一篇我有讲过,项目里面冗余的css一般分为两种情况:

  1. 有过多重复的CSS代码;
  2. 有写CSS代码没有任何作用;

接下来针对,第二种情况我们看一下使用webpack 和 使用 gulp 的两种情况下的处理方案。


webpack的完整处理方案:

  1. less/sass文件打包和分离
  2. 自动处理css前缀
  3. 消除未使用的css
  4. 完整的webpack.config.js文件

一、less文件打包和分离

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

npm install less --save-dev
npm install less-loader --save-dev

2、在module中配置

分别的 build文件夹下面的 webpack.dev.conf.js(开发环境)、webpack.prod.conf(生产环境) 这两个文件module进行配置

webpack.prod.conf.js文件

var webpackConfig = merge(baseWebpackConfig, {module: {rules: [{test: /\.css$/,include: config.appSrc,use: ExtractTextPlugin.extract({fallback: 'style-loader',use: cssLoaders.own})},{test: /\.less$/,include: config.appSrc,use: ExtractTextPlugin.extract({fallback: 'style-loader',use: (cssLoaders.own).concat({loader: 'less-loader',options: {modifyVars: theme.theme3}})})},{test: /\.css$/,include: config.appNodeModules,use: ExtractTextPlugin.extract({fallback: 'style-loader',use: cssLoaders.nodeModules})},{test: /\.less$/,include: config.appNodeModules,use: ExtractTextPlugin.extract({fallback: 'style-loader',use: cssLoaders.nodeModules.concat({loader: 'less-loader',options: {modifyVars: theme.theme3}})})}]}

webpack.dev.conf.js文件

module.exports = merge(baseWebpackConfig, {module: {rules: [{test: /\.css$/,include: config.appSrc,use: ['style-loader'].concat(cssLoaders.own)},{test: /\.less$/,include: config.appSrc,use: ['style-loader'].concat(cssLoaders.own).concat({loader: 'less-loader',options: {modifyVars: theme[themeName]}})},{test: /\.css$/,include: config.appNodeModules,use: ['style-loader'].concat(cssLoaders.nodeModules)},{test: /\.less$/,include: config.appNodeModules,use: ['style-loader'].concat(cssLoaders.nodeModules).concat({loader: 'less-loader',options: {modifyVars: theme[themeName]}})}]}

精简文件


{test: /\.less$/,use: [{loader: "style-loader" },{loader: "css-loader" },{loader: "less-loader"}]
}

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

HTML

<div id="leesBox"></div>

LESS

@base:yellowgreen;
#leesBox{width:300px;height:200px;background: @base;
}

4、引入到index.js中

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

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

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里面去了


二、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')]
}

不过webpack 从三开始已经自动集成了 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文件里面加了浏览器前缀

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


四、消除未使用的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、配置

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

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

我们加了无用的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:[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服务
}

gulp的完整处理方案:

1、说明:gulp-uncss 是gulp的一个插件。gulp是基于nodejs,理所当然需要安装nodejs;

2、安装:打开nodejs官网,点击硕大的绿色Download按钮,它会根据系统信息选择对应版本(.msi文件)。然后像安装QQ一样安装它就可以了(安装路径随意)。

3、安装gulp:全局安装gulp,执行npm install gulp -g,检测gulp是否安装成功,执行gulp -v 显示版本号即安装成功,

4、新建一个gulp项目。(不懂的可以看我另一篇文章,点击即可查看)

5、接下来就是安装gulp-uncss插件:进入项目根目录,执行

npm install gulp-uncss --save-dev

6、配置gulpfile.js

var gulp = require('gulp'),
uncss = require('gulp-uncss');
gulp.task('uncss', function() {   gulp.src('ht3/resource/css/*.css')   这里是需要去除无用css目录,*.css是目录下所有的css.pipe(uncss({  html: ['ht3/*.html']   这里是项目所有的html目录,})) .pipe(gulp.dest('dist/uncss'));  这里是去除无用css之后生成新的css目录,})

7、配置好之后,执行命令

gulp-uncss

使用webpack或者gulp去除多余CSS相关推荐

  1. html 清理 多余 样式,webpack去除冗余css样式删除多余css

    webpack打包css时,一般时压缩css,但css有很多用不到类和属性,有什么办法可以除冗余css样式删除多余css,特别是在使用一些bootstrap的前端框架时,可使用purifycss和Pu ...

  2. 前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上

    阅读目录 理想的前端开发流程 Gulp 为何物 webpack 又是从哪冒出来的 结论 文章有点长,总共 1800 字,阅读需要 18 分钟.哈哈,没耐心的直接戳我到高潮部分. 理想的前端开发流程 在 ...

  3. 前端集成解决方案(webpack、gulp)

    一.什么是前端集成解决方案 FIS(Front-end Integrated Solution)是专为解决前端开发中自动化工具.性能优化.模块化框架.开发规范.代码部署.开发流程等问题的工具框架. 二 ...

  4. 下载的TXT小说如何去除广告、去除多余空行?

    下载的TXT小说如何去除广告.去除多余空行? 看已完结的小说还是下载下来用好一点的本地阅读软件看比较舒服,毕竟那种追书软件一般体验都不好.但是下载下来的TXT小说一般都会有广告或排版问题.下面说说如何 ...

  5. 如何去除小数点后面多余的0_704密封胶如何使用?怎么样去除多余的704密封胶?...

    与其它胶粘剂差不多,704密封胶有着既定的使用步骤.按照正确工艺去操作,均匀涂抹之后,快速固化并发挥更多性能.对于用户们来说,不能盲目去操作. 如何正确使用704密封胶? 1.可以使用胶枪去操作,打开 ...

  6. php 去除多余空行,php如何去除空行

    php去除空行的方法:首先通过"preg_replace("/(\r\n|\n|\r|\t)/i", '', $text);"方法去除多余的空格或换行:然后对H ...

  7. Latex 中导入visio画的图片,去除多余留白

    Latex 中导入visio画的图片,去除多余留白 第一次使用Latex写论文,模板是IEEE Tran,每次在visio画完图后保存导入latex中使用时,图片周围总是有很多留白,试了很多次,决定还 ...

  8. gulp压缩整合css和js文件

    gulp压缩整合css和js文件 原创 dadaDaShiXiong 最后发布于2018-09-18 14:28:38 阅读数 1164 收藏 发布于2018-09-18 14:28:38 版权声明: ...

  9. 编写一个函数,从一个字符串中去除多余的空格。

    这道题是<C和指针>上面的习题,出自于65页第7题,题目描述为: 编写一个函数,从一个字符串中去除多余的空格.函数的原型应该如下: void   deblank( char  string ...

最新文章

  1. 工行服务器维护时间,工行服务器安全链接
  2. WINCE基于MC8630的3G模块的控制和加载
  3. java 关闭虚拟机_如何使用Oracle VirtualBox Java API关闭虚拟机?
  4. 【十大经典数据挖掘算法】C4.5
  5. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 1 Keynote: Scott Hunter
  6. C#LeetCode刷题之#39-组合总和(Combination Sum)
  7. 深入了解自动化测试方案
  8. 地方门户网站如何盈利?
  9. 怎么做游戏打击感浅述
  10. Quartz.NET 入门
  11. javascript 原型链实现继承简单例子
  12. C语言如何调用REFPROP软件,如何用C++6.0调用refprop物性查询软件
  13. opencv无获取摄像头视频帧(YUV打开导致失败)
  14. Adobe CS2提供免费序列号
  15. 宝尚市场静候收官的市场又出现短期噪音
  16. larval PHP artisan命令
  17. Attack Lab
  18. C语言中逗号运算符和逗号表达式
  19. 什么是 游戏引擎 ?各个主流引擎的区别
  20. 虚拟主机到底哪家比较好呢?

热门文章

  1. 最新RemObjects,您值得拥有
  2. 1-5(思科)交换机配置实战需要注意的地方
  3. Android--OkHttp理解系列(一)
  4. Java Web学习总结-文件下载
  5. linux+nginx+mysql+php系统修改文件上传大小限制
  6. ibus无法出现选择框如何解决
  7. React的Transaction浅析
  8. Hadoop-MapReduce 入门
  9. linux vsftpd关于500 OOPS错误问题解决
  10. 阿里云服务器下安装LAMP环境(CentOS Linux 6.3) 安装与配置 Apache 服务