美文网首页
webapck处理页面中的css

webapck处理页面中的css

作者: IamaStupid | 来源:发表于2020-06-19 14:25 被阅读0次
  1. 需要注册插件:

"style-loader": "^1.2.1",
"css-loader": "^3.5.3",

"less-loader": "^6.1.0",

"autoprefixer": "^9.8.0",
"postcss-loader": "^3.0.0",

"mini-css-extract-plugin": "^0.9.0",
将CSS提取为独立的文件的插件,对每个包含css的js文件都会创建一个CSS文件,支持按需加载css和sourceMap
比如:你的项目引入了公用样式common.css,又在其他独立页面/procuct引入了独立的protcut.css样式,如果没有进过该插件处理,这个两个css样式文件的内容会以两个style标记的形式插入页面,而如果使用了样式分离插件,这两个css文件打包后依然是两个独立的css文件。

// 老牌工具uglify不支持es6,且uglify-es不再更新,所以选择terser作为js代码压缩工具
"terser-webpack-plugin": "^3.0.4",
// css压缩
"optimize-css-assets-webpack-plugin": "^5.0.3",

  1. 使用postcss需要写对应的配置
// postcss.config.js
module.exports = {
  plugins: [
      require('autoprefixer')
  ]
}

使用postcss会用到autoprefixer插件,而使用autoprefixer插件需要配置browserslist
独立配置browserslist文件或者在package.json中添加配置

// 在package.json中添加
"browserslist": [
    "defaults"
]
  1. 在webpack中使用css相关插件
// webpack.prd.js
optimization: {
    minimize: true, //取代 new UglifyJsPlugin(/* ... */)
    // new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})压缩css样式
    minimizer: [new TerserJSPlugin({
      terserOptions: {
        compress: {
          // 打包的时候,过滤console.log代码
          // pure_funcs: ["console.log"]
          // 注释的代码是不会打包的
          // warnings: true,
          drop_debugger: true,
          drop_console: true
        }
      }
    }), new OptimizeCSSAssetsPlugin({})]
  },

// webpack.common.js
...
plugins: [
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin({
      template: "./src/index.html"
    }),
    // 分离样式文件,否则所有的样式都会以style标签的形式直接插入head标签中
    new MiniCssExtractPlugin({
      filename: 'static/css/[name].css',
      chunkFilename:  global._ENV === 'dev' ? '[id].css' : 'static/css/[id].[hash:5].css'
    }),
  ],
...
{
          // test: /\.(sa|sc|c)ss$/,
          test: /\.(le|c)ss$/,
          use: [
            global._ENV === 'dev' ? 'style-loader' : MiniCssExtractPlugin.loader,
            'css-loader',
            'postcss-loader',
            'less-loader',
          ]
},
...
// css样式内容首先被less-loader处理,然后是postcss-loader处理,再经过css-loader处理,最后被style-loader或MiniCssExtractPlugin.loader处理。
// 从下往上调用的顺序

相关文章

网友评论

      本文标题:webapck处理页面中的css

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