css-loader将CSS文件变成commonJS模块,加载到JS中
style-css通过附加style标签的方式引入样式
less-loader和less 将less文件编译为css文件
less-loader只起到粘合作用;
less是真正用来编译SCSS的
sass-loader和node-sass将SCSS语法编译为CSS
sass-loader只起到粘合作用
node-sass是真正用来编译SCSS的
mini-css-extract-plugin用于提取样式到CSS文件

Sass与SCSS

Sass是对CSS的语法增强,其后缀名为.scss。
sass-loader将SCSS语法编译为CSS,因此在使用时还需要搭配css-loader和style-loader。sass-loader只是编译核心库与Webpack的连接器,起到粘合作用,需要搭配node-sass使用,node-sass是真正用来编译SCSS的。
按装node-sass时可能会超时,设置一个cnpm的镜像地址

  1. npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
  2. npm install sass-loader node-sass

Less

PostCSS

PostCSS是一个编译插件的容器。它接受样式源代码,并交由编译插件处理,最后输出CSS。

postcss-loader

推荐将pstcss-loader放在css-loader之后使用

  1. npm -i postcss-loader -D

自动前缀Autoprefixer

  1. npm i autoprefixer -D

postcss.config.js中添加autoprefixer

  1. const autoprefixer = require('autoprefixer')
  2. module.exports = {
  3. plugins: [
  4. autoprefixer({
  5. // 支持的特性
  6. grid: true,
  7. }),
  8. ],
  9. }

兼容浏览器在package.json中配置

  1. {
  2. "browserslist": {
  3. "development": [
  4. "last 1 chrome version"
  5. ],
  6. "production": [
  7. ">0.2%",
  8. "not dead",
  9. "not op_mini all"
  10. ]
  11. },
  12. }

stylelint

  1. npm i stylelint -D
  1. const stylelint = require('stylelint')
  2. module.exports = {
  3. plugins: [
  4. stylelint({
  5. config: {
  6. rules: {
  7. 'declaration-no-important': true,
  8. },
  9. },
  10. }),
  11. ]
  12. }

CSSNext

支持使用最新的CSS语法特性,PostCSS会把CSSNext的语法翻译为浏览器能够接受的属性和形式。

  1. npm i postcss-cssnext -D
  1. const autoprefixer = require('autoprefixer')
  2. module.exports = {
  3. plugins: [
  4. postcssCssnext({
  5. // 兼容浏览器
  6. browsers: ['> 1%', 'last 2 version'],
  7. }),
  8. ],
  9. }

mini-css-extract-plugin

用于提取样式到CSS文件,支持按需加载CSS