生活随笔
收集整理的这篇文章主要介绍了
create-react-app 开发环境编译太慢的解决方案
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
项目环境:windows 10 1089版本 create-react-app:3.0.0 react:16.8.6 react-router-dom:5.0.0
方案一
使用 babel-plugin-dynamic-import-node
原理:转换 import()为 require(),将所有异步组件都用同步的方式引入
页面路由配置文件:使用react-router推荐的loadable加载文件,不做任何修改
使用步骤
安装包
npm install babel-plugin-dynamic-import-node --save-dev
or
yarn add babel-plugin-dynamic-import-node --dev
配置环境变量
项目根目录下建 .env.development文件和.env.production文件
.env.development 文件
NODE_ENV=development
PUBLIC_URL=/
port=8343
.env.production文件 文件
NODE_ENV=production
PUBLIC_URL=/
port=8343
配置 .babelrc (package.json配置:把下面env字段对象放到"babel"字段配置项里就好)
{"presets": ["react-app"],"env": {"development": {"plugins": ["dynamic-import-node"]}},"plugins": [["@babel/plugin-proposal-decorators",{"legacy": true}],["import",{"libraryName": "antd","libraryDirectory": "es","style": "css"}]]
}
启动项目 yarn start 完成后改变项目代码运行编译时间对比
配置前
配置后
通过两张图对比我们发现启动时间从27.269秒减少到11.462秒,快了一半多。
修改文件编译时间从16.931秒减少到0.702秒,快了20多倍。
方案二
手动修改加载路由组件的导入方法
1.项目文件目录
2.核心修改
src/router/loader.js 文件
import Loadable
from "react-loadable";
import Loading
from "@/components/Loading";const devLoader = file
=> require("@/views/" + file
).default;const loader = viewPath
=>Loadable({loader
: () => import(`@/views/${viewPath}`),loading
: Loading
});const _import
= process
.env
.NODE_ENV === "production" ? loader
: devLoader
;export default _import
;
3.在路由配置文件中
src/router/modules/appSetting.js 文件中导入loader文件
import React
from "react";
import loader
from "../loader";
const SettingHotel
= loader(`setting/baseSetting`);
const SettingProtocol
= loader(`setting/protocol`);const routers
= [{path
: "/setting",title
: "设置",icon
: "setting",redirect
: "/setting/base",forbiddenLink
: true,subRouters
: [{path
: "/setting/base",component
: () => <SettingHotel
/>,title
: "基础设置"},{path
: "/setting/protocol",component
: () => <SettingProtocol
/>,title
: "协议"}]}
];export default routers
;
4.修改完成后启动项目,并修改项目代码
修改前
修改后
通过两张图对比我们发现启动时间从27.269秒减少到14.312秒,快了近一半。
修改文件编译时间从16.931秒减少到3.696秒,快了五倍左右。
其他方案
采用react-hot-loader热加载局部更新
实际体验对开发编译速度提升不大,此处略。
总结
推荐使用第一种方案,除了速度快,副作用也比较少。
第二种方案src/views/下的 .jsx或.js 文件都会被打包。不管你是否被依赖。所以这样就产生了一个副作用,就是会多打包一些可能永远都用不到 js 代码。当然这只会增加 dist或build文件夹的大小,但不会对线上代码产生任何的副作用。
第一种方案解决了第二种方案重复打包的问题,同时对代码的侵入性也很小,平时写路由的时候只需要按照官方文档路由懒加载的方式就可以了,其它的都交给babel来处理。
总结
以上是生活随笔为你收集整理的create-react-app 开发环境编译太慢的解决方案的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。