热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手动将Webpack2.x迁移到最新版Webpack4.8.3(当前GitHub最新版本)

手动webpack2.x升级到webpack4.8.3(当前github最新版本)一直使用的webpack是2.3.3版本作为生产环境使用,看了react-create-

手动 webpack2.x 升级到 webpack 4.8.3(当前github最新版本)

一直使用的 webpack 是 2.3.3 版本作为生产环境使用,看了 react-create-app 的 webpack 是 3.8 版本,想着都是折腾,就直接自己手动升级到 4.8.3 吧,然后就动手改了,折腾了一个下午和晚上升级完全成功

之前面试阿里,那面试官在面完我后,说我没过,但是他还很耐心的和我交流了半小时来的,教我如何学习折腾一个东西,非常感谢哪位好心人教会我,想要提高就得多折腾。

webpack4 更改的接口是多,但是兼容性挺好,基本上没啥大的变更,找准升级的部分更改配置就行。

开始吧!

更换的包列表

image

新增

需要重新安装
resolve-from:该包需要强制性重装,作为依赖包不会更新;
uglifyjs-webpack-plugin: 该插件用来丑化的
extrac-lodaer:对文件进行 hash 处理
babel-preset-env: 新增该包,为了解析 jsx 的自带功能

> npm i -D -f babel-preset-env resolve-from@^3.0.0 uglifyjs-webpack-plugin extract-loader

更新的包

> npm i -D -f webpack webpack-cli babel-core babel-loader react-axe@3.0.1 extract-text-webpack-plugin file-loader html-loader html-webpack-plugin 

更新包后出现的问题

react-axe:该包需要指定 3.0.1 才能支持 webpack4.x
resolve-from: 该依赖包需要高于3.x 版本,但是依赖环境不会下载最新的包
html-webpack-plugin:需要强制性的更新到最新版本,否则 解析不了,报错

webpack4 的配置记录

需要更改参数位置的 plugins 是 uglifyjscommonChunk

module 的变更

{
    module:{
        rules:[
        // less 和 css 等合并在一块处理
            { // 自定义 less 主题
                test: /\.(css|less)$/,
                use: [
                {
                    loader: "style-loader"
                }, {
                    loader: "css-loader"
                }, {
                    loader: "less-loader",
                    options: {
                        modifyVars: theme  // 处理 antd 主题的配置
                }]
            },
        // 文件处理
            {
                test:/\.(png|jpg|gif)$/,
                use:[{
                    loader:'url-loader',
                    options:{ // 这里的options选项参数可以定义多大的图片转换为base64
                        limit:10000, // 表示小于50kb的图片转为base64,大于50kb的是路径
                        // outputPath:'images' //定义输出的图片文件夹
                    }
                }]
            },
            {
                test:/\.(ttf|eot|svg|woff)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                use:[{
                    loader:'url-loader',
                    options:{ // 这里的options选项参数可以定义多大的图片转换为base64
                        limit:10000, // 表示小于50kb的图片转为base64,大于50kb的是路径
                        // outputPath:'images' //定义输出的图片文件夹
                    }
                }]
            },
        ]
    }
}

移植的 plugins 配置

{
// 该参数原来是在 plugins 参数的
    optimization:{
        splitChunks:{
            chunks:'all'
        },
        minimizer: [
            new UglifyJsPlugin({
                /* your config */
                uglifyOptions:{
                    compress:true,
                    ecma:6,
                    output:{
                        comments:false,
                    },
                    compress:{
                        dead_code:true,
                        drop_console:true,
                    }
                },
                sourceMap:false,
            })
        ]
    },
}

html-webpack-plugin 升级

参考文章:html-webpack-plugin 升级到 webpack4 的配置

A tale of Webpack 4 and how to finally configure it in the right way

总结

先使用原来的配置,不更改,使用最新版本的 webpack 来运行,看到错误时候有3个解决途径;

1. github/issue

2. 官方文档 :

官网得好好利用,原来不知道配置选项参数(加载器、插件)需要自己在指南详细内容里找链接 才能跳到相应接口

3. google

这3个方式,在看到错误,去查找错误信息的时机非常重要,搜索错误信息位置(搜索引擎)和方式(关键词)对的话,基本上错误都是一下命中查到相关的信息了

罗列参考文章:

基本上 webpack4 比较全的文章

webpack3 升级到 4 的指导

webpack UglifyJsPlugin 的配置


推荐阅读
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文将指导如何向ReactJS计算器应用添加必要的功能,使其能够响应用户操作并正确计算数学表达式。 ... [详细]
author-avatar
笑意江湖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有