webpack学习-提取分离css文件插件 mini-css-extract-plugin

334 阅读1分钟

webpack学习-提取分离css文件插件 mini-css-extract-plugin

学习它的理由

1.如果将css和js等全部打包在一个chunk文件中,这个文件就会太大了.这时候就需要用到该插件进行提取.

2.几乎所有脚手架(vuecli,reactcli,taro,uni-app等等)都有使用它,你不学,有一些脚手架的问题,没法处理.

PS:笔者就被taro无法实别scss中的背景图和无法实别字体图标折磨了20多个工时(如果原来就会的话,花不了30秒,只用修改一处配置).

安装插件

npm install --save-dev mini-css-extract-plugin

webpack官方文档地址:v4.webpack.docschina.org/plugins/min…

插件使用

直接上代码,由webpack官方文档上摘取.

// webpack官方文档摘取
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
// 判断运行环境,只在生产环境才使用该插件
const devMode = process.env.NODE_ENV !== 'production'

module.exports = {
  plugins: [
    new MiniCssExtractPlugin({
      // 生成文件名称,可以加上路径,如: ./css/[name].css
      filename: devMode ? '[name].css' : '[name].[hash].css'
    })
  ],
  module: {
    rules: [
      {
        test: /.(sa|sc|c)ss$/,
        // 开发环境使用style-loader,生产环境使用 MiniCssExtractPlugin.loader
        use: [
          devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader',
          'sass-loader',
        ],
      }
    ]
  }
}

使用就两步:

1.在plugins中new一个实体对象.

2.MiniCssExtractPlugin.loader替换掉style-loader的位置.