• webpack4 单独抽离打包 css 的新实现


    webpack4 单独抽离打包 css 的新实现

    前言

    之前我们使用的打包 css 无非两种方式:① 将 css 代码打包进 入口 js 文件中;② 使用第三方插件(extract-text-webpack-plugin)实现【注意,该插件在 webpack4 中已经不推荐使用,而且会出现各种莫名其妙的 bug】
    正是基于对以上两种方式缺点的思考,结合我的实际使用过程,我认为以后我们应该完全摒弃掉上述两种方式,这里推荐一种一种新的实现方式:file-loader

    file-loader

    我先给个 file-loader 的使用说明吧(传送门:https://github.com/webpack-co...
    在我们的传统认知中 file-loader 大多是用来处理 图像元素的,其实如果你认真看过上面的那个传送门的话,才明白我们一直以来是被被误导了,下面我给出几个官方的使用例子吧
    传统的处理图像
    
    module.exports = {
      module: {
        rules: [
          {
            test: /.(png|jpg|gif)$/,
            use: [
              {
                loader: 'file-loader',
                options: {},
              },
            ],
          },
        ],
      },
    };
    
    处理 css 【本文重点】
    
    const path = require('path');
    const CleanWebpackPlugin = require('clean-webpack-plugin');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
        entry: {
            app: './src1/index.js',
            print: './src1/print.js'
        },
        output: {
            filename: '[name].bundle.js',
            path: path.resolve(__dirname, 'dist')
        },
        module: {
            rules: [
                { // loader 图片
                    test: /.(png|svg|jpg|gif)$/,
                    use: ['file-loader']
                },
                { // 处理字体
                    test: /.(woff|woff2|eot|ttf|otf)$/,
                    use: [
                        'file-loader'
                    ]
                },
                {
                    // 单独打包出 css
                    test: /.css$/,
                    use: ['file-loader']
                }
            ]
        },
        plugins: [
            new CleanWebpackPlugin(['dist']),
            new HtmlWebpackPlugin({ 
                title: 'webpack4 extract css methord of new',
                template: './src1/index.html',
                filename: 'index.html',
                minify: {
                    collapseWhitespace: true
                },
                hash: true
            })
        ],
        mode: "production"
    };
    

    上面这个代码是我亲自实测过的,大家可以放心借鉴,使用了 file-loader 来处理 css 后,就不再需要额外的插件了,当然了,如果你需要指定输出的 css 文件名和路径,可以这么写 user: ['file-loader?name=[name].bundle[hash].css']等,这里的写法就是类似 get 方式的传参那样,?符号后面带参数名即可

    仅供参考,如果你有什么更好的建议可以 contact 我哦

    来源:https://segmentfault.com/a/1190000017856783

  • 相关阅读:
    打印对象的 “精心骗局”
    js继承(自备水,这非常干货)
    递归实现深拷贝( 只要学过js递归,看不懂找我包会 )
    PuTTY SSH 使用证书免密码登录
    git 使用
    php socket通信的简单实现
    基于PHP实现短信验证码接口的方法
    PHP实现页面静态化的简单方法分享
    Yii2使用数据库操作汇总(增删查改、事务)
    PHP 获取当前页面的URL信息
  • 原文地址:https://www.cnblogs.com/lalalagq/p/10260045.html
Copyright © 2020-2023  润新知