美文网首页
webpack 样式处理

webpack 样式处理

作者: noyanse | 来源:发表于2020-06-23 11:33 被阅读0次

webpack 样式处理

分离样式文件

  1. exract-text-webpack-plugin 4.0以下的版本
    npm install extract-text-webpack-plugin
const ExtractTextPlugin = require('extract-text-webpack-plugin')
module.exports = {
  entry: './app.js',
  output: {
    filename: 'bundle.js',
  },
  mode: 'development',
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader', // 当指定插件无法提取样式时所采用的loader
          use: 'css-loader' // 指定在提取样式之前采用哪些loader来预先处理
        })
      }
    ]
  },
  plugins: [ // 接收一个插件数组
    // 单文件 new ExtractTextPlugin('bundle.css') // 传入提取后的资源文件名
    // 多文件
    new ExtractTextPlugin('[name].css') // [name]指的是chunk的名字
  ]
}
  1. mini-css-extract-plugin 4.0以上官方推荐版本, exract-text-webpack-plugin的升级版
    支持按需加载css
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
module.exports = {
  entry: './app.js',
  output: {
    filename: [name].js',
  },
  mode: 'development',
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../' // 用来指定异步css的加载路径
            }
          },
          'css-loader'
        ]
      }
    ]
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: '[name].css', // 同步加载的css资源名
      chunkFilename: '[id].css' // 异步加载的css资源名
    }) // [name]指的是chunk的名字
  ]
}

我自己测试,并没有打包出多个css

样式预处理

scss less等 要转为css
sass有两种语法,scss使用最多,所以在安装和配置时都是sass-loader,而文件是 .scss
sass-loader scss语法编译为css 只是起到黏合的作用
node-sass 编译scss
npm install sass-loader node-sass
安装node-sass时,需要下载一个系统相关的二进制包,下载可能超时,可设置cnpm
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass

rules: [
  {
    test: /\.scss$/,
    use: ['style-loader', 'css-loader', 'sass-loader']
  }
]
// 配置sourceMap
rules: [
  {
    test: /\.scss$/,
    use: ['style-loader',
      {
        loader: 'css-loader',
        options: {
          sourceMap: true
        }
      },
      {
        loader: 'sass-loader',
        options: {
          sourceMap: true
        }
      }
    ]
  }
]

less与scss类似

npm install less-loader less

rules: [
  {
    test: /\.less$/,
    use: ['style-loader',
      {
        loader: 'css-loader',
        options: {
          sourceMap: true
        }
      },
      {
        loader: 'less-loader',
        options: {
          sourceMap: true
        }
      }
    ]
  }
]

postCss

不算是css预编译器,只是编译插件的容器
npm install postcss-loader

rules: [
  {
    test: /\.css/,
    use: [
      'style-loader',
      'css-loader',
      'postcss-loader'
    ]
  }
]

需要一个配置文件,在根目录创建 postcss.config.js
// postcss.config.js:

module.exports = {}

stylelint css的质量检查工具

npm install stylelint
postcss.congif.js:

module.exports = {
  plugins: [
    stylelint({
      config: {
        rules: {
          'declaration-no-important': true // 当代码中出现!important会给出警告
        }
      }
    })
  ]
}

cssnext

postcss 与 cssnext结合,可使用css最新语法
npm install postcss-cssnext
postcss.congif.js:

module.exports = {
  plugins: [
    postcssCssnext({
      browsers: [
        '>1%',
        'last 2 versions'
      ]
    })
  ]
}

CSS Modules

  1. 每个css文件中样式都有单独的作用域
  2. 对css依赖管理,可通过相对路径引入
  3. 可复用其它css模块

只要开启css-loader中的modules配置项即可

rules: [
  {
    test: /\.css/,
    use: [
      'style-loader',
      {
        loader: 'css-loader',
        options: {
          modules: true,
          // 指明css代码中的类名如何编译 .style__title__1CFy6
          // name 模块名 local 选择器标志符 hash:base64:5 五位hash值
          // hash是根据模块名和标识符计算的
          localIdentName: '[name]__[local]__[hash:base64:5]'
        }
      }
    ]
  }
]

css modules文件导出一个对象

// style.css:
.title {
  color: red;
}
// app.js:
import styles from './style.css'
document.write(`<h1 class="${styles.title}">test css modules </h1>`)

相关文章

  • webpack 样式处理

    webpack 样式处理 分离样式文件 exract-text-webpack-plugin 4.0以下的版本np...

  • webpack 4.0 基础配置

    基础配置主要包括: webpack 基础配置安装 webpack 打包后的配置 html 插件 样式处理 es6 ...

  • 5、webpack从0到1-处理css文件

    讲下webpack如何处理css样式文件。git仓库:webpack-demo 1、新建 进入项目中,在src目录...

  • vue静态资源的存放

    静态资源可以放在public和webpack里 1 通过webpack处理获得如下好处 a 脚本和央样式表会被...

  • 3、webpack添加样式处理

    基础环境搭建 通过require导入的样式是无法被识别的,需要加载器: 接着基础工程添加样式处理: 1、安装样式插...

  • webpack实战——样式与处理

    前言 这是webpack实战系列笔记的第8篇记录——样式与处理,前几篇记录如下: 打包第一个应用 模块化与模块打包...

  • 9.整合打包css

    webpack提供两个工具处理样式表,css-loader 和 style-loader,二者处理的任务不同,cs...

  • SSR中Webpack-Server-Config配置

    服务端webpack配置 服务端要正确处理首屏的图片和样式等 服务端要支持动态import,懒加载 webpack...

  • webpack基础(二)样式的处理

    本系列文章的webpack版本未webpack4 样式 CSS webpack默认只支持js模块 在js中引入cs...

  • 6、webpack从0到1-less、sass、postcss

    还是延续上节的内容,webpack如何处理less、sass这种预编译样式文件。本节的内容主要是postcss的运...

网友评论

      本文标题:webpack 样式处理

      本文链接:https://www.haomeiwen.com/subject/sigcfktx.html