技本功丨create-react-app升级webpack4填坑

本文介绍了如何将create-react-app项目升级到webpack4,包括自定义webpack配置、调整目录结构、解决升级过程中遇到的问题,如HtmlWebpackPlugin和react-dev-utils的顺序问题,以及less版本不兼容问题。通过一步步操作,最终成功完成升级。
摘要由CSDN通过智能技术生成

都说create-react-app是业界最优秀的 React 应用开发工具之一。But,webpack4都更新到v4.20.2 它居然~还没升级,简直~不能忍

看到webpack这更新速度,本人慌得一批,刚好抽空搭建react-andt-mobx脚手架准备升级~

So,在此分享一下升级攻略,收好不谢!

 

01 安装

npm install -g create-react-app

 

02 创建应用

//create-react-app是全局命令来创建react项目
create-react-app react-demo

 

03 自定义webpack配置

npm run eject  //自定义模式,暴露出webpack配置,不可逆

 

04 着手自定义webpack配置

1、目标结构

当然webpack升级准备,调整create-react-app的目录结构已符合我们项目开发的规范是必不可少的。这里重点需关注的为build目录下的一下文件:

paths文件更改打包路经更改:

 

在项目开发的过程中host配置以及proxy代理是常见的配置,在create-react-app中配置在package.json配置下,灵活性相对不太好,提取webpack中server.js配置:

别忘了修改webpackDevServer.config.js下引用host及proxy下的引用哦。

此时,目录改造全部完毕

渐入佳境,赶紧进入正题

2、webpack3升级webpack4

webpack4新出了一个mode模式,有三种选择,none,development,production.最直观的感受就是你可以少些很多配置,因为一旦你开启了mode模式,webpack4就会给你设置很多基本的东西。

development模式下,将侧重于功能调试和优化开发体验,包含如下内容:

  • 浏览器调试工具

  • 开发阶段的详细错误日志和提示

  • 快速和优化的增量构建机制

production模式下,将侧重于模块体积优化和线上部署,包含如下内容:

  • 开启所有的优化代码

  • 更小的bundle大小

  • 去除掉只在开发阶段运行的代码

  • Scope hoisting和Tree-shaking

  • 自动启用uglifyjs对代码进行压缩

话不多说,下安装:
yarn add webpack webpack-cli webpack-dev-server

  • 这3个包是webpack4的基础功能

  • webpack 在 webpack 4 里将命令行相关的都迁移至 webpack-cli 包

  • webpack-dev-server为实时监控文件变化包

安装完成之后,请保持淡定,

得先运行一下,万一直接能打包呢

或许它偷偷做了兼容处理呢,

梦想还是要有呢,虽然...

Plugin could not be registered at 'html-webpack-plugin-before-html-processing'. Hook was not found. BREAKING CHANGE: There need to exist a hook at 'this.hooks'. To create a compatiblity layer for this hook, hook into 'this._pluginCompat'.

果然还是熟悉的味道

上面这个问题是HtmlWebpackPlugin 和 react-dev-utils/InterpolateHtmlPlugin 先后顺序问题,调整下他们的顺序

 new HtmlWebpackPlugin({
      inject: true,
      template: paths.appHtml,
      chunksSortMode: 'none',
    }),
    new InterpolateHtmlPlugin(env.raw),

嗯,不出意外的话,搞定

再跑一下代码,这个时候可能就出现了一些百度不到问题,你需要升级各种loader了,

less-loader,sass-loader style-loader url-loader

具体命令:

yarn add less-loader@next 

和上面的命令相同,依次升级,运行代码,查看报错,缺啥补啥,成功的选择,值得拥有....

需要升级的有:

  • <
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值