webpack拆分压缩css并以link导入的操作步骤

先看一下代码文件结构:

入口文件(index1.js)内容:

import $ from 'jquery'
import './css/index.css'
import './less/index.less'
$(function () {
    $('#app li:nth-child(odd)').css('color', 'red')
    $('#app li:nth-child(even)').css('color', 'green')
})

import './assets/fonts/iconfont.css';
const ul = document.querySelector("ul");
const theI = document.createElement("li");
theI.className='iconfont icon-qq';
ul.appendChild(theI);

webpack.config.js配置文件内容:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    //入口文件地址
    entry: './src/index1.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        //出口文件名
        filename: 'bundle.js',
    },
    plugins: [
        new HtmlWebpackPlugin({
        template: './public/隔行变色.html'
    })],
     module: {
         rules: [{
             //匹配.css结尾的文件,i是不区别大小写
             test: [/\.css$/i],
            //从右往左执行,不能改变顺序style-loader是 CSS 插入到 DOM 中,css- loader是对 @import 和 url() 进行处理,就像 js 解析 import /require() 一样
             use: ["style-loader", "css-loader"],
         }, {
             test: /\.less$/i,
                 use: [
                     // compiles Less to CSS
                     'style-loader',
                     'css-loader',
                     'less-loader',
                 ],
             }, { // webpack5默认内部不认识这些文件, 所以当做静态资源直接输出即可
                 test: /\.(eot|svg|ttf|woff|woff2)$/,
                 type: 'asset/resource',
                 generator: {
                     filename: 'font/[name].[hash:6][ext]'
                 }
             }],
     },
};

我们进行打包然后运行打包后的html文件:

发现css样式是通过js生成style标签的形式添加上去的

我们运行打包后会发现less转为了css文件,但css文件确通过js加入style标签,下面我们将css进行拆分出来,并以link标签引入

步骤:

1、安装mini-css-extract-plugin

npm i mini-css-extract-plugin -D    //npm安装
yarn add mini-css-extract-plugin -D    //yarn安装

2、在webpack.config.js文件中引入并配置

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
//引入安装的mini-css-extract-plugin
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
    //入口文件地址
    entry: './src/index1.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        //出口文件名
        filename: 'bundle.js',
    },
    plugins: [new MiniCssExtractPlugin(),
        new HtmlWebpackPlugin({
        template: './public/隔行变色.html'
    })],
     module: {
         rules: [{
             //匹配.css结尾的文件,i是不区别大小写
             test: [/\.css$/i],
            //从右往左执行,不能改变顺序style-loader是 CSS 插入到 DOM 中,css- loader是对 @import 和 url() 进行处理,就像 js 解析 import /require() 一样
             use: [MiniCssExtractPlugin.loader, "css-loader"
             ],
         }, {
             test: /\.less$/i,
                 use: [
                     // compiles Less to CSS
                     MiniCssExtractPlugin.loader,
                     'css-loader',
                     'less-loader',
                 ],
             }, { // webpack5默认内部不认识这些文件, 所以当做静态资源直接输出即可
                 test: /\.(eot|svg|ttf|woff|woff2)$/,
                 type: 'asset/resource',
                 generator: {
                     filename: 'font/[name].[hash:6][ext]'
                 }
             }],
     },
};

注意:

  • HtmlWebpackPlugin是将css文件以link形式引入到打包后的html页面中的。
  • use配置项是从右至左的。
  • 在css和less使用中即(use配置项中)MiniCssExtractPlugin.loader一定不要放在css-loader后面和style-loader前面,因为css-loader和less-loader是对@import和url()进行处理的,就像js解析import/require()一样(放在它之后相当于还没进行解析就拆分了会报错)。而style-loader是把CSS插入到DOM中的(放在它之前相当于已经将CSS插入到DOM中了再进行拆分会报错)。

3、压缩拆分出来的css文件

  • 下载optimize-css-assets-webpack-plugin
  • 引入并配置webpack.config.js文件
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
//引入安装的mini-css-extract-plugin
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
//用来压缩拆分的CSS
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = {
    //入口文件地址
    entry: './src/index1.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        //出口文件名
        filename: 'bundle.js',
    },
    plugins: [new MiniCssExtractPlugin(),new OptimizeCSSAssetsPlugin({}),
        new HtmlWebpackPlugin({
        template: './public/隔行变色.html'
    })],
     module: {
         rules: [{
             //匹配.css结尾的文件,i是不区别大小写
             test: [/\.css$/i],
            //从右往左执行,不能改变顺序style-loader是 CSS 插入到 DOM 中,css- loader是对 @import 和 url() 进行处理,就像 js 解析 import /require() 一样
             use: [MiniCssExtractPlugin.loader, "css-loader"
             ],
         }, {
             test: /\.less$/i,
                 use: [
                     // compiles Less to CSS
                     MiniCssExtractPlugin.loader,
                     'css-loader',
                     'less-loader',
                 ],
             }, { // webpack5默认内部不认识这些文件, 所以当做静态资源直接输出即可
                 test: /\.(eot|svg|ttf|woff|woff2)$/,
                 type: 'asset/resource',
                 generator: {
                     filename: 'font/[name].[hash:6][ext]'
                 }
             }],
     }
};

4、进行打包

发现多了一个main.css文件,打开网页进行查看:

main.css文件以link方式引入进去了 并且被压缩了

到此这篇关于webpack拆分压缩css并以link导入的文章就介绍到这了,更多相关webpack拆分压缩css内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • webpack 打包压缩js和css的方法示例

    打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件, 其命令 webpack -p 即表示调用UglifyJS来压缩代码,还有不少webpack插件如 html-webpack-plugin 也会默认使用UglifyJS. uglify-js的发行版本只支持ES5,如果你要压缩ES6+代码请使用开发分支. UglifyJS可用的选项有: parse      

  • webpack4 css打包压缩问题的解决

    这两天一直在练习这个webpack4, 发现有好多问题和坑,做开发嘛,一定要有喜欢出问题并喜欢解决问题,坚决踩个坑填个坑的不怕死小强精神! webpack4 在配置上其实是可以是想production和development的, // webpack.config.js module.exports = { // webpack会根据mode进行对Js打包,development压缩,production下面自动压缩,亲测没有问题 mode: 'development' // productio

  • webpack拆分压缩css并以link导入的操作步骤

    先看一下代码文件结构: 入口文件(index1.js)内容: import $ from 'jquery' import './css/index.css' import './less/index.less' $(function () { $('#app li:nth-child(odd)').css('color', 'red') $('#app li:nth-child(even)').css('color', 'green') }) import './assets/fonts/ico

  • Python利用第三方模块实现压缩css文件

    目录 csscompressor 库使用 cssmin 库的用法 rcssmin 库的用法 总结 csscompressor 库使用 在 Python 中可以使用多种方法来压缩 CSS 文件.其中一种流行的方法是使用 csscompressor 库,这个库可以帮助你压缩 CSS 代码,减小文件大小.在控制台中运行 pip install csscompressor 来安装这个库. 后续的核心是使用 csscompressor.compress() 函数来压缩 CSS 文件. 接下来演示一下最基础

  • SpringMVC架构的项目 js,css等静态文件导入有问题的解决方法

    发生原因 <servlet> <servlet-name>springmvc-mybaits</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> &l

  • php简单压缩css样式示例

    本文实例讲述了php简单压缩css样式的方法.分享给大家供大家参考,具体如下: $css = ''; //找css目录 $root = $_SERVER['DOCUMENT_ROOT'].'/css/'; //directory where the css lives $files = explode(',',$_SERVER['QUERY_STRING']); if(sizeof($files)) { foreach($files as $file) { $css.= (is_file($ro

  • r.js来合并压缩css文件的示例

    如何使用r.js来合并压缩css文件.在r5下新建一个css文件夹,里面有四个css文件:main.css.nav.css.form.css.grid.css. main.css是合并的主文件,或称配置文件.要合并的文件使用@import引入.如下 main.css @importurl("nav.css"); @importurl("grid.css"); @importurl("form.css"); 另外三个是普通的css文件,里面定义的各

  • 浅谈用Webpack路径压缩图片上传尺寸获取的问题

    问题的起因是因为的我的图片大小大于url-loader 的尺寸标准,导致webpack自动将图片的路径做了压缩处理,直接导致了我在获取dom的value的时候无法正确的获取到图片的正确路径. 直接上解决的方法. picUpload(e) { let image = new Image(); const reader = new FileReader(); const $img = e.target.files[0]; const formData = new FormData(); formDa

  • BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤

    bootstrap-fileinput源码:https://github.com/kartik-v/bootstrap-fileinput bootstrap-fileinput在线API:http://plugins.krajee.com/file-input bootstrap-fileinput Demo展示:http://plugins.krajee.com/file-basic-usage-demo 这个插件主要是介绍如何处理图片上传的处理操作,原先我的Excel导入操作使用的是Upl

  • 使用imp和exp命令对Oracle数据库进行导入导出操作详解

    这里导入导出路径都在D盘下,默认文件名为:example.dmp exp方式导出数据 相关参数项如下: 关键字 说明 默认 USERID 用户名/口令 FULL 导出整个文件 (N) BUFFER 数据缓冲区的大小 OWNER 导出指定的所有者用户名列表 FILE 输出文件 (EXPDAT.DMP) TABLES 导出指定的表名列表 COMPRESS 是否压缩导出的文件 (Y) RECORDLENGTH IO 记录的长度 GRANTS 导出权限 (Y) INCTYPE 增量导出类型 INDEXE

  • 无需压缩软件,用python帮你操作压缩包

    写在之前 压缩包是互联网上软件发布的标准格式,同时对于系统管理很有用处.当我们需要将多份文件发送给别人的时候,最好通过压缩包的形式发送,还有在备份某些文件的时候,为了减少磁盘空间的占用,也需要对备份的数据进行压缩. Python 中有一系列对压缩包进行处理的工具,包括创建压缩包,解压压缩包以及获取压缩包中的文件列表等,今天的文章,我们就来学习一下与压缩包相关的 Python 标准库. 管理 zip 压缩包 在大多数情况下,我们在 Windows 下使用 zip 进行压缩,在 Linux 下使用

  • sqlserver数据库导入数据操作详解(图)

    Microsoft SQL Server Management Studio是SQL SERVER的客户端工具,相信大家都知道.我不知道大伙使用导入数据的情况怎么样,反正我最近是遇到过.主要是因为没有远程数据库服务器的权限,而需要测试新修改的内容对旧数据的冲突.因为流程改变,免不了需要修改数据来适应新的变化.所以需要在测试环境里面去模拟真实环境的数据.当时还搞笑,直接是粘贴到EXCEL,然后再复制到数据库.对于一般来说,这种方式也可以,但是对于一些特殊的字符,如果直接粘贴到EXCEL里面的话,并

随机推荐