相对比较全的webpack5配置

2023-11-10

const path = require('path')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const autoprefixer = require("autoprefixer");
//占位符
//hash chunkhash name id
module.exports = {
    //代码分割
    optimization: {
        splitChunks: {
            chunks: "all",
            cacheGroups: {
                axios:{
                    test:/axios/,
                    name:'axios'
                },
                easyqrcodejs:{
                    test: /easyqrcodejs/,
                    name:'easyqrcodejs'
                },
                jquery:{
                    test: /jquery/,
                    name:'jquery'
                }
                // defaultVendors: {
                //     test: /[\\/]node_modules[\\/]/,  // 正则匹配文件,这里匹配的是node_modules
                // },
            },
        },
        usedExports: true,// 树摇
        minimize: true, // 是否压缩
    },
    devServer: {
        hot:true,
        // host:'0.0.0.0',
        // port:8023,
        open: true,
        client: {
            progress: true,
        },
        proxy: {
            "/hjfs": {
                target: "http://192.168.1.101:8023",
                changeOrigin: true,
                pathRewrite: {'^/hjfs': ''},
            }
        },
        setupMiddlewares: (middlewares, devServer) => {
            devServer.app.post('/hjf/getname', (req, res) => {
                res.send({
                    name: 'sssss'
                })
            })
            return middlewares
        },
    },
    //构建模式  production
    mode: "production",
    devtool:false,
    // devtool: "source-map",
    //上下文 项目打包的相对路径
    // context: "",
    //入口文件
    // entry: "./src/index.js",
    // output: {
    //     //构建的文件资源路径,必须是绝对路径
    //     path:path.resolve(__dirname,"./dist"),
    //     //构建的文件资源叫啥
    //     filename: "index.js"
    // }
    //多入口
    entry: {
        index: './src/index.js',
        other: './src/other.ts'
    },
    output: {
        clean: true,
        //构建的文件资源路径,必须是绝对路径
        // path:path.resolve(__dirname,"./dist"),
        //构建的文件资源叫啥----实际占位符
        // filename: "./js/[name]-[chunkhash:6].js"
        filename: "./js/[name].js"
    },
    resolve: {  //文件扩展名需要添加ts
        extensions: ['.js'],
        alias: {
            aa:'../node_modules/jquery/dist/jquery.js'
        }
    },
    //cdn优化,会直接用cdn引入
    externals:{
        jquery:'jQuery',
    },
    module: {
        rules: [
            {
                test: /\.js?$/, // js
                exclude:/node_modules/,
                use:[
                    {
                        loader: "babel-loader",
                        options: {
                            presets:[
                                [
                                '@babel/preset-env',
                                {
                                    corejs:3,
                                    useBuiltIns:'usage',
                                    targets:{
                                        ie:6
                                    }
                                }]
                            ]
                        }
                    },

                ],
            },
            {
                oneOf: [
                    {
                        test:/\.jsx$/,
                        exclude:/node_modules/,
                        use:[
                            //babel这里其实涉及到了一些写法,主要还是要看官网文档为主
                            {
                                loader: "babel-loader",
                                options: {
                                    presets: [
                                        [
                                            "@babel/preset-react",
                                            // {
                                            //     pragma: "dom", // default pragma is React.createElement (only in classic runtime)
                                            //     pragmaFrag: "DomFrag", // default is React.Fragment (only in classic runtime)
                                            //     throwIfNamespace: false, // defaults to true
                                            //     runtime: "classic" // defaults to classic
                                            //     // "importSource": "custom-jsx-library" // defaults to react (only in automatic runtime)
                                            // }
                                        ]
                                    ]
                                }
                            }
                        ]
                    },
                    {
                        test: /\.(jpg|png|jpe?g|gif)$/,
                        exclude:/node_modules/,
                        type: "asset/resource",
                        generator: {
                            filename: 'static/img/[name][ext]'
                        },
                        parser:{
                            dataUrlCondition:{
                                maxSize:1000 * 1024
                            }
                        }
                        // use:["file-loader"]
                    },
                    {
                        test: /\.css$/,
                        include: path.resolve(__dirname,'src'),
                        use: [
                            MiniCssExtractPlugin.loader,
                            {
                                loader: "css-loader",
                                options: {
                                    modules: true
                                }
                            },
                            {
                                loader: "postcss-loader",
                                options: {
                                    postcssOptions: {
                                        plugins: [
                                            autoprefixer({
                                                overrideBrowserslist: ["last 50 versions", ">1%"]
                                            })
                                        ]
                                    }

                                }
                            },
                            // "css-loader"
                        ]
                    },
                    {
                        test: /\.less$/,
                        include: path.resolve(__dirname,'src'),
                        use: [
                            MiniCssExtractPlugin.loader,
                            "css-loader",
                            {
                                loader: "postcss-loader",
                                options: {
                                    postcssOptions: {
                                        plugins: [
                                            autoprefixer({
                                                overrideBrowserslist: ["last 50 versions", ">1%"]
                                            })
                                        ]
                                    }

                                }
                            },
                            "less-loader"
                        ]
                    },
                    {
                        test: /\.ts$/,
                        exclude: /node-modules/,
                        use: [
                            {
                                loader: "babel-loader",
                                options: {
                                    presets:[
                                        [
                                            "@babel/preset-env",
                                            {
                                                corejs:3,
                                                useBuiltIns:'usage',
                                                targets:{
                                                    ie:6
                                                }
                                            }
                                        ]
                                    ]
                                }
                            },
                            'ts-loader'
                        ],
                    }
                ],
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/index.html', // 让webpack自动生成一个html文件 要把指定的模块里的代码携带者
        }),
        new MiniCssExtractPlugin({
            // 对输出的css文件进行重命名
            filename: './css/index.css',
        }),
    ],
    performance: {
        maxEntrypointSize: 50000000,
        // 生成文件的最大体积
        maxAssetSize: 30000000,
    },
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相对比较全的webpack5配置 的相关文章

  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 为什么我的淘汰单选按钮在另一个具有点击绑定的元素内时会失败?

    我有一个单选按钮列表 我想要点击 li 他们还检查单选按钮 这一切都有效 直到我放了一个name单选元素上的属性 然后我的代码停止工作 我的代码如下所示 ul li li ul li
  • Webpack 与 typescript 获取 TypeScript 发出无输出错误

    我从这里得到了这个配置https www npmjs com package ts loader https www npmjs com package ts loader webpack config js var path requir
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • 如何将函数附加到弹出窗口关闭事件(Twitter Bootstrap)

    我做了一些搜索 但我只能认为我可以将事件附加到导致其关闭的按钮 https stackoverflow com questions 13205103 attach event handler to button in twitter boo
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 为 Angular2 中的组件加载多个样式表

    我正在构建一个 angular2 应用程序 当我尝试为同一组件加载多个样式表时 我面临多个问题 这是我正在做的代码 import Component from angular core Component selector my tag t
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 将 UMD Javascript 模块导入浏览器

    你好 我正在对 RxJS 进行一些研究 我可以通过在浏览器中引用它来使用该库 如下所示 它使用全局对象命名空间变量 Rx 导入 我可以制作可观察的东西并做所有有趣的事情 当我将 src 更改为指向最新的 UMD 文件时 一切都会崩溃 如下所
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • Cypress 在 Create React App 中返回 .scss 文件的 webpack 编译错误

    我正在尝试将 Cypress 添加到非常基本的 CRA 但遇到了 Cypress 无法理解 scss 文件的问题 当我跑步时npm run cypress运行测试 我收到以下错误 Error Webpack Compilation Erro
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • 2022计算机软件毕业设计大全

    springboot快递代拿系统 6630 电竞选手管理系统 SSM MySQL 6629 自习室预约网站 SSM MySQL 6626 眼镜销售系统 SSM MySQL 6620 基于Java的学生管理系统 IDEA SSM MySQL
  • Centos7 增加/修改SSH连接端口

    Centos7 增加 修改SSH连接端口 1 修改配置文件 2 如果你关闭了SELinux 可以忽略这一步 3 防火墙开放22345端口 4 重启SSH服务和防火墙 最好也重启下服务器 1 修改配置文件 vim etc ssh sshd c
  • typescript变量声明入门 泛型 interface 可索引接口 type

    最近面试了好多人 简历都写熟练使用TypeScript 可是聊下来发现声明复杂一点的变量只会any 简直就是来搞笑的 TypeScript 是 JavaScript 的超集 扩展了 JavaScript 的语法 TypeScript中为了使
  • maven setting

    Maven Phases Although hardly a comprehensive list these are the most common default lifecycle phases executed validate v
  • 【机器学习代码例】用BP神经网络做预测

    机器学习算法 源码下载链接 导入包 import numpy as np import matplotlib pyplot as plt import pandas as pd 定义激活函数 激活函数 def tanh x return n
  • jeecg boot MybatisInterceptor 的使用笔记

    目前使用的旧版本是2 0 2 更新了新版本2 2 1 sql UPDATE tablename set update time updateTimeNew where ID id and update time updateTime 使用中
  • 【CSS】CSS餐厅小游戏练习1~32关的参考答案

    链接 CSS3餐厅练习 玩法 利用各种选择器选中抖动的物体即可通关 1 Type Selector 元素选择器 元素选择器 作用 根据标签名来选中指定的元素 语法 标签名 例子 p h1 div plate 2 Type Selector
  • 07 - 日志服务器的搭建与攻击

    目录 1 项目环境 2 拓扑图 3 思路 4 配置GW CentOS 7 4 1 配置ens33 4 2 配置ens32 4 3 配置ens34 5 配置Server CentOS 7 1804 7 配置Syslog CentOS 7 18
  • webpack4入门笔记——打包模式选择

    什么是mode webpack4增加了mode配置项 这样会做一些默认的工作 一定程度上解决了webpacke配置复杂的弊端 语法 mode development production 复制代码 不配置默认是production 这是2种
  • Python中最小堆结构的heapq模块

    堆是非线性的树形的数据结构 完全二叉树 有两种堆 最大堆与最小堆 heapq库中的堆默认是最小堆 最大堆 树中各个父节点的值总是大于或等于任何一个子节点的值 最小堆 树中各个父节点的值总是小于或等于任何一个子节点的值 我们一般使用二叉堆来实
  • 用python送父亲节祝福,父亲节:程序员硬核示爱,“爸”气告白!

    转载来自51cto https blog 51cto com 15127557 2665130 转眼 已至6月第三周了 2020年即将过去一半 2020年06月21日 星期日 庚子年 鼠年 五月初一 也就是明天 这一天也是父亲节 父亲节 F
  • 【168】Java调用EXE并利用多线程接收EXE的输出流

    代码一共分两个类 分别是 CmdInputStreamRunnable 和 CmdUtils CmdInputStreamRunnable java import java io author 张超 操作系统执行命令时会有输出 这些输出会被
  • c语言中的顺序点

    http bbs csdn net topics 370153775 经常可以在一些讨论组里看到下面的提问 谁知道下面C语句给n赋什么值 m 1 n m m 最近有位不相识的朋友发email给我 问为什么在某个C 系统里 下面表达式打印出两
  • solidworks 之迈迪齿轮设计方法 粗浅解释

    之前对同步带比较了解 从来未涉及到齿轮的设计 对迈迪的工具不是了解 之前从来无法争取生成过齿轮 特此标记方法 必须要有这个标记 根据经验系数 其他的也没有尝试 之前默认选项是用户自定义 之后就可以选择模数 然后齿数 然后到 齿数决定了齿轮的
  • CTF 加解密合集

    0x00 前言 本篇的目的是对工具的收集 以及对一些题目的整理 持续更新 CTF 加解密合集 CTF Web合集 网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 古典加密 1 栅栏加密 CTF加密解密
  • Mac电脑——MySQL数据库root密码忘记了,不要紧,看我操作

    1 先把MySQL服务器停止运行 2 打开MySQL的文件 并修改my cnf文件 mac电脑是my cnf windows电脑是my ini 3 my cnf文件无法打开 我们可以将该文件的后缀名my cnf修改为my txt 修改完后在
  • 归零码和不归零码、单极性码和双极性码

    关于基带数字信号表示 下面有一些常见的细节 对于传输数字信号来说 最常用的方法是用不同的电压电平来表示两个二进制数字 即数字信号由矩形脉冲组成 a 单极性不归零码 无电压表示 0 恒定正电压表示 1 每个码元时间的中间点是采样时间 判决门限
  • python 获取时间间隔,Python:从时间间隔到值的映射

    I m refactoring a function that given a series of endpoints that implicitly define intervals checks if a number is inclu
  • JPA多条件查询之AND和OR混合查询

    JPA多条件查询这种业务场景是很常见的 比如说这种 像这种同一个查询条件可以多选的用OR语句来查询 比如 材质 之间选了 PU 和 橡胶 就用OR 不同查询条件之间则用AND语句查询 比如 品牌 和 材质 之间就用AND拼接 我现在要根据不
  • 相对比较全的webpack5配置

    const path require path const MiniCssExtractPlugin require mini css extract plugin const HtmlWebpackPlugin require html