一、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文件

<div id="leesBox"></div>
@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')
]
}

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

  3、配置

{
test:/\.css$/,
use:extractTextPlugin.extract({
fallback:"style-loader",
use:[
{loader:"css-loader",options:{importLoader:}},
"postcss-loader"
]
})
}

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

四、消除未使用的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:
}
}]
},{
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:}},
"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:
}// 配置webpack服务
}

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

  1. webpack.config.js文件的高级配置

    一.多个入口文件之前我们配置的都是 一个入口 var webpack = require('webpack'); var commonsPlugin = new webpack.optimize.Co ...

  2. webpack配置之webpack.config.js文件配置

    webpack配置之webpack.config.js文件配置 webpack.config.js webpack resolve  1.总是手动的输入webpack的输入输出文件路径,是一件非常繁琐 ...

  3. webpack教程(二)——webpack.config.js文件

    首先我们需要安装一个webpack插件html-webpack-plugin,该插件的作用是帮助我们生成创建html入口文件.执行如下命令 npm install html-webpack-plugi ...

  4. webpack 4.0 配置文件 webpack.config.js文件的放置位置

    一般webpack.config.js是默认放在根目录的,不在根目录的时候需要在package.json中制定位置,我的配置文件目录是config/webpack.config.js,在package ...

  5. wepy build 错误 [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件。

    [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件. 缺少less包,npm install less -d

  6. webpack快速入门——CSS进阶:消除未使用的CSS

    使用PurifyCSS可以大大减少CSS冗余 1.安装 cnpm i purifycss-webpack purify-css --save-dev 2.引入glob,因为我们需要同步检查html模板 ...

  7. vue 调用常量的config.js文件

    我遇到问题,就是有很多常量需要应用的项目里面.所以需要打算设置一个config.js文件 1.填写config.js 文件 //常量配置 //快递公司名单 对应的页面为: src/pages/othe ...

  8. vue-cli3的vue.config.js文件配置,生成dist文件

    //vue.config.jsonconst path = require('path'); // const vConsolePlugin = require('vconsole-webpack-p ...

  9. vue-cli3没有config文件解决方案,在根目录加上vue.config.js文件

    module.exports = { /** 区分打包环境与开发环境 * process.env.NODE_ENV==='production' (打包环境) * process.env.NODE_E ...

随机推荐

  1. 使用pipeline管道执行redis命令

    pipeline管道可以减少后端与redis的连接次数,从而实现了优化. 原理如下: 使用方法: 未使用pipeline前: strict_redis = get_redis_connection(' ...

  2. Selenium2+python自动化34-获取百度输入联想词【转载】

    前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的. 本篇以百度输入框输入关键字匹配后,打印出联想词汇. 一.定位输入框联想词 1.首 ...

  3. ubantu16.04服务器错误提示没有安装php_fileinfo扩展

    如果你是安装的LNMP1.3full一键安装包,安装的是php5.6.22,你会遇到这个错误,解决方法也不难,请看如下: 不需要去下载扩展,只需要进入此fileinfo目录(我这里有多个版本5.6,7 ...

  4. (四)mysql数据类型

    数据类型基本介绍 数值类型 整形类型:tinyint,int,bigint 浮点类型:float,double 字符串类型 char系列:char varchar text系列:text blob系列 ...

  5. 代码编辑器[0] -> Vim/gVim[3] -> 像编程一样使用Vim

    像编程一样使用Vim 目录 为什么是Vim / Why Vim 从hjkl开始上路 -- 使用基本按键进行移动和编辑 / Start from <hjkl> 一次超速和翻车的体验 -- 使 ...

  6. Lambda演算(二)归约!归约!归约!

    (一) 这里先不列出λ项的正式定义,只记住λ表达式语义上的构造方式为: x 一个单独的变量名是一个λ项表达式: (λx.M) 该λ表示一个函数.其中 M 是这个函数的函数体,M 本身也是一个 λ项. ...

  7. Dfs【p1454】 圣诞夜的极光

    题目描述-->p1454 圣诞夜的极光 题意概括: 寻找联通块数量,这里的连通块定义与其他的不同. 这里定义为曼哈顿距离不超过2的都属于一个联通块. 什么?不知道曼哈顿距离是啥? 曼哈顿距离简易 ...

  8. Reference resources

    CentOS7 (精简操作指令) http://www.centoscn.com/CentOS/help/2016/0429/7147.html

  9. codevs 1643 线段覆盖 3

    1643 线段覆盖 3  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 在一个数轴上有n条线段,现要选取其中 ...

  10. java 面向接口编程的理解

    初学者可能在学习中会有很多疑惑,为什么要这样,明明可以那样实现,这样做的好处又是什么? 可能会的人觉得很简单很容易理解,甚至可能觉得问的问题很智障,但对于小白来说可能是苦思冥想都不得其解的. 自己身为 ...