当前位置: 首页 > news >正文

04.webpack中css的压缩和抽离

1.抽离css文件

利用mini-css-extract-plugin插件,替代style-loader

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
module.exports = smart(webpackCommonConf, {mode: 'production',output: {// filename: 'bundle.[contentHash:8].js',  // 打包代码时,加上 hash 戳filename: '[name].[contenthash:8].js', // name 即多入口时 entry 的 keypath: distPath,// publicPath: 'http://cdn.abc.com'  // 修改所有静态文件 url 的前缀(如 cdn 域名),这里暂时用不到},module: {rules: [// 抽离 css{test: /\.css$/,loader: [MiniCssExtractPlugin.loader,  // 注意,这里不再用 style-loader'css-loader','postcss-loader']},// 抽离 less --> css{test: /\.less$/,loader: [MiniCssExtractPlugin.loader,  // 注意,这里不再用 style-loader'css-loader','less-loader','postcss-loader']}]},plugins: [// 抽离 css 文件new MiniCssExtractPlugin({filename: 'css/main.[contenthash:8].css'})],})

2. 优化压缩css代码

terser-webpack-pluginoptimize-css-assets-webpack-plugin

const TerserJSPlugin = require('terser-webpack-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
module.exports = smart(webpackCommonConf, {mode: 'production',output: {// filename: 'bundle.[contentHash:8].js',  // 打包代码时,加上 hash 戳filename: '[name].[contenthash:8].js', // name 即多入口时 entry 的 keypath: distPath,// publicPath: 'http://cdn.abc.com'  // 修改所有静态文件 url 的前缀(如 cdn 域名),这里暂时用不到},module: {rules: []},plugins: [],optimization: {// 压缩 cssminimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],}
})

3.完整压缩抽离css代码

const path = require('path')
const webpack = require('webpack')
const { smart } = require('webpack-merge')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const TerserJSPlugin = require('terser-webpack-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const webpackCommonConf = require('./webpack.common.js')
const { srcPath, distPath } = require('./paths')module.exports = smart(webpackCommonConf, {mode: 'production',output: {// filename: 'bundle.[contentHash:8].js',  // 打包代码时,加上 hash 戳filename: '[name].[contenthash:8].js', // name 即多入口时 entry 的 keypath: distPath,// publicPath: 'http://cdn.abc.com'  // 修改所有静态文件 url 的前缀(如 cdn 域名),这里暂时用不到},module: {rules: [// 图片 - 考虑 base64 编码的情况{test: /\.(png|jpg|jpeg|gif)$/,use: {loader: 'url-loader',options: {// 小于 5kb 的图片用 base64 格式产出// 否则,依然延用 file-loader 的形式,产出 url 格式limit: 5 * 1024,// 打包到 img 目录下outputPath: '/img1/',// 设置图片的 cdn 地址(也可以统一在外面的 output 中设置,那将作用于所有静态资源)// publicPath: 'http://cdn.abc.com'}}},// 抽离 css{test: /\.css$/,loader: [MiniCssExtractPlugin.loader,  // 注意,这里不再用 style-loader'css-loader','postcss-loader']},// 抽离 less --> css{test: /\.less$/,loader: [MiniCssExtractPlugin.loader,  // 注意,这里不再用 style-loader'css-loader','less-loader','postcss-loader']}]},plugins: [new CleanWebpackPlugin(), // 会默认清空 output.path 文件夹new webpack.DefinePlugin({// window.ENV = 'production'ENV: JSON.stringify('production')}),// 抽离 css 文件new MiniCssExtractPlugin({filename: 'css/main.[contenthash:8].css'})],optimization: {// 压缩 cssminimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],}
})
http://www.lryc.cn/news/237831.html

相关文章:

  • Vue 3 和 Spring Boot 3 的操作流程和执行步骤详解
  • 获取所有非manager的员工emp_no
  • STM32存储左右互搏 SPI总线FATS文件读写FLASH W25QXX
  • Sentinel 熔断规则 (DegradeRule)
  • 嵌入式Linux开发面试题和答案
  • Linux安装Mysql详细教程(两种安装方法)
  • 用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制商业文案助手
  • redis---非关系型数据库
  • Java WebSocket 获取客户端 IP 地址
  • 【HarmonyOS】低代码平台组件拖拽使用技巧之页签容器
  • Linux fork和vfork函数用法
  • Oracle Data Redaction和Oracle Data Pump
  • python django 小程序图书借阅源码
  • CI/CD --git版本控制系统
  • CSS中2种复合选择器
  • 【Skynet 入门实战练习】开发环境搭建 | 运行第一个项目 | debug console 简单使用
  • 【探索嵌入式虚拟化技术与应用】— 虚拟化技术深入浅出自学系列
  • MIB 6.1810实验Xv6 and Unix utilities(5)find
  • 百度爬虫的工作原理解析
  • Linux入门必备指令
  • linux系统环境下mysql安装和基本命令学习
  • Monitor 原理
  • Java核心知识点整理大全7-笔记
  • Flink Operator 使用指南 之 全局配置
  • 手把手教你通过CODESYS V3进行PLC编程(一)
  • 《算法通关村—进制转换问题处理模板》
  • python接口自动化测试之接口数据依赖
  • s28.CentOS、Ubuntu、Rocky Linux系统初始化脚本v6版本
  • go同步锁 sync mutex
  • 使用项目自动生成的dokcerfile第一次构建时把加载aps5.0失败无法找到加载的文件