layer.less
.layer { width: 600px; height: 200px; background-color: green; div { width: 400px; height: 100px; background-color: red; } .flex { display: flex; } }
layer.html
<div class="layer"> <div> </div> </div>
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { entry: './src/app.js', output: { filename: 'js/[name].bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', // 排除 exclude: /node_modules/, query: { presets: ["@babel/preset-env"] } }, { test: /\.css$/, use: [ 'style-loader', // 用来处理css中引入的css { loader: 'css-loader', options: { importLoaders: 1 } }, { loader: 'postcss-loader', options: { ident: 'postcss', plugins: [ require('autoprefixer')({ broswers: ['last 5 versions'] }), ] } } ] }, { test: /\.less$/, use: [ 'style-loader', // 用来处理css中引入的css 'css-loader', { loader: 'postcss-loader', options: { ident: 'postcss', plugins: [ require('autoprefixer')({ broswers: ['last 5 versions'] }), ] } }, { loader: 'less-loader'} ] } ] }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ filename: 'index.html', // html 标题 title: 'this is a.html', // 使用模板 template: 'index.html', // script标签插入位置 inject: 'body' }), ], };
loaders的顺序是从右到左
css 需要importLoader less中已经默认处理过了.
关于sass以及less不用添加importLoaders参数个人理解是less-loader将其处理编译成了一个单文件css(包括import部分的less),而直接导入css的并没被处理成单文件css。
处理less文件,要安装less-loader:(将less转化为css)
npm install less-loader --save-dev
(loader的处理方式是从右到左,为loader属性设置一串的loader值后,会首先处理最右边的loader)
使用配置如下:
以上配置打包后,就可将less文件转化成css并通过style标签引入到打包后的index.html头部了,且less中兼容性不好的属性也会经过postcss的处理自动添加上前缀
如果在less文件中使用了@import引入了其他less文件,当通过上述设置直接打包后,被引入模块同样也会经过postcss的处理,这跟处理css文件是有区别的
如果使用了sass文件,同样也是先安装再使用
npm i sass-loader --save-dev
loader:'style-loader!css-loader?importLoaders=1!postcss-loader'
在less文件中@import 不许要制定importantLoaders=1 (处理flex浏览器兼容问题的时候)
安装less-loader之前要安装less,处理less就要安装less-loader,sass-loader
有关于postcssloader引入的一些顺序
style!css?importLoader=1!postcss
style!css!postcss!sass!less