样式处理
样式部分,在开发阶段会涉及到使用预处理语言,如less、sass等;
如在vue的单文件组件中:
在编译时,会涉及到兼容的处理、压缩
- 预处理
此处例举如下几种预处理的使用
less,sass,stylus
例如less
需要插件less-loader、less
less
安装:npm i -D less less-loader配置:
//省略...module:{rules:[//+++{test:/\.less$/,//less文件。vue中会将使用less写的样式抛出给该rule处理use:['vue-style-loader','css-loader','less-loader' //与css文件的处理相比,多了先一步的less处理,处理完成后就是css]},//+++]}//省略...使用:
<style lang="less" scoped>@color: white;body {background-color: @color;}</style>sass
安装:npm i -D node-sass sass-loader配置:
//省略...module:{rules:[//+++{//sass文件。vue中会将使用sass写的样式抛出给该rule处理.vue中lang可以设置为sass/scss,只需将两者类型都匹配到sass就行test:/\.(scss|sass)$/,use:['vue-style-loader','css-loader','sass-loader' //与css文件的处理相比,多了先一步的sass处理,处理完成后就是css]},//+++]}//省略...使用:
<style lang="sass" scoped>$color: white;body {background-color: $color;}</style>stylus
安装:npm i -D stylus stylus-loader配置:
//省略...module:{rules:[//+++{//stylus文件。vue中会将使用stylus写的样式抛出给该rule处理.test:/\.stylus$/,use:['vue-style-loader','css-loader','stylus-loader' //与css文件的处理相比,多了先一步的stylus处理,处理完成后就是css]},//+++]}//省略...使用:
<style lang="stylus" scoped>bodybackground-color #fff</style>vue中支持好几种css预处理,vue的脚手架中有专门生成cssloader部分。但是需要手动安装相应的loader和依赖。
兼容
兼容处理主要处理一些css属性的兼容,比如transform,有的需要加上-webkit-前缀才能支持;
可以在编译的时候根据需要兼容的浏览器自动处理需要兼容的属性。
需要使用到的插件:
postcss-loader
postcss-import
autoprefixer安装:
npm i -D postcss-loader postcss-import autoprefixer配置:webpack.config.js:
//+++{test: /\.less$/,use: ['vue-style-loader','css-loader','postcss-loader', //需在css-loader/style-loader后面,在其他预处理前面'less-loader']},//++在webpack.config.js的同目录下新建 .postcssrc.js 文件,内容如下:
module.exports = {plugins: {'postcss-import':{}, //在css文件中有使用@import时,需要这个插件。使用预处理的时候不需要'autoprefixer': {} //自动增加前缀,就是做兼容处理。具体的兼容配置在package.json中配置。}}设置浏览器兼容版本,在package.json中配置:
详细配置参考 browserslist//+++"browserslist": ["> 1%","last 2 versions","not ie <= 8","iOS >= 7","Android > 4.1"]//+++压缩
optimize-css-assets-webpack-plugin //css压缩
uglifyjs-webpack-plugin //js压缩已经内置到 webpack4 中。但是css的压缩并没有。配置的时候如果不配置js压缩,只配置css压缩,则js不会压缩,需要同时配置。
详细配置见:uglifyjs-webpack-plugin安装:
npm i -D optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin配置(包括js的压缩)
//+++const UglifyJsPlugin = require('uglifyjs-webpack-plugin')const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')//++//省略...plugins:[],//+++optimization: {minimizer: [new UglifyJsPlugin({//js压缩cache: true,parallel: true,sourceMap: true}),new OptimizeCSSAssetsPlugin({})//css压缩]}//+++
本文地址: http://gehaiqing.com/blog/2018/07/06/20180706-webpack-4-style/