基于create-react-app的再配置
前面的话
使用Facebook官方推出的create-react-app脚手架,我们基本可以零配置搭建基于webpack的React开发环境。但是,如果需要个性化定制,则还需要基于create-react-app进行再配置
环境变量
【设置】
在根目录下新建.env文件,可以用于本地环境变量覆盖
如在该文件中进行如下设置
PORT=
则开发服务器会在2000端口开启服务
【默认】
默认支持的环境变量有: NODE_ENV 和 PUBLIC_URL
NODE_ENV: 该变量是自动赋值的,你不可以更改它的值,对于npm start, 它的值是develepment, npm test它的值是test, 对于npm run build, 它的值是production
PUBLIC_URL: 这个变量可以用于引用模块系统之外的资源路径前缀
【区分环境】
一般地,在开发端,会使用redux-logger在控制台显示触发action时的日志,但在生产端,则完全不需要。可以使用NODE_ENV环境变量来区分环境
let store = null
if (process.env.NODE_ENV === 'development') {
store = createStore(rootReducer, applyMiddleware(thunk, logger))
} else {
store = createStore(rootReducer, applyMiddleware(thunk))
}
【外部资源】
如果要设置静态资源CDN,则需要在.env文件中设置PUBLIC_URL
PUBLIC_URL = 'cdn url'
在HTML中使用
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
在Javascript中使用
return <img src={process.env.PUBLIC_URL + '/img/logo.png'} />
【自定义】
可以自定义环境变量,不过需要遵照一个约定,所有自定义环境变量均以REACT_APP_开头
这些环境变量会定义在process.env中。例如,环境变量REACT_APP_SECRET_CODE会在JS中暴露为process.env.REACT_APP_SECRECT_CODE
【更新】
目录react-scripts最新版本是1.1.4,以如下方式进行更新
npm install --save --save-exact react-scripts@1.1.
配置代理
在package.json中配置,与其他项目同级
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
"proxy": {
"/api": {
"target": "https://m.weibo.cn",
"changeOrigin": true,
"pathRewrite":{"^/api":""}
}
}
由于create-react-app默认支持fetch,所以在组件中使用fetch获取数据,结果显示在了控制台中
fetch('api/comments/show?id=4199740256395164&page=1').then(res => {
res.json().then(data => {
console.log(data)
})
})
配置别名
【rewire】
使用react-app-rewired来进行react的再配置,首先使用npm安装
$ npm install react-app-rewired --save-dev
然后,更改package.json中的scripts部分
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test --env=jsdom",
"eject": "react-app eject"
},
然后,在根目录新建config-overrides.js文件,配置如下
const path = require('path');
function resolve(dir) {
return path.join(__dirname, '.', dir)
}
module.exports = function override(config, env) {
config.resolve.alias = {
'@': resolve('src')
}
return config;
}
重启开发服务器后,就可以使用@来表示'src'的绝对路径了
【eject】
或者,npm run eject之后 ,直接更改config目录下的dev.js和prod.js文件中的alias设置
alias: {
'@': path.join(__dirname, '..', 'src'),
...
},
配置eslint
安装插件
npm install react-app-rewired react-app-rewire-eslint --save
在根目录下新建.eslint.js文件,文件中一定要添加如下配置
module.exports = {
"parser":"babel-eslint",
...
否则,会报下面的错误
Parsing error: Unexpected token =
配置PWA
create-react-app中有默认的service worker设置,但是没有对接口缓存进行处理
下面对SWPrecacheWebpackPlugin插件的配置增加如下处理
runtimeCaching: [{
urlPattern: '/',
handler: 'networkFirst'
},
{
urlPattern: /\/(posts|categories|recommends|users)/,
handler: 'networkFirst'
},
{
urlPattern: '/posts/:id',
handler: 'networkFirst'
}
]
基于create-react-app的再配置的更多相关文章
- 如何扩展 Create React App 的 Webpack 配置
如何扩展 Create React App 的 Webpack 配置 原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...
- 深入 Create React App 核心概念
本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...
- tap news:week5 0.0 create react app
参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...
- 在 .NET Core 5 中集成 Create React app
翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...
- 使用create react app教程
This project was bootstrapped with Create React App. Below you will find some information on how to ...
- Create React App
Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...
- Create React App 安装less 报错
执行npm run eject 暴露模块 安装 npm i less less-loader -D 1.打开 react app 的 webpack.config.js const sassRege ...
- create react app的 css loader 进行局部配置
{ test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, sourceMap: isEnv ...
- [React] Use the Fragment Short Syntax in Create React App 2.0
create-react-app version 2.0 added a lot of new features. One of the new features is upgrading to Ba ...
- [React] {svg, css module, sass} support in Create React App 2.0
create-react-app version 2.0 added a lot of new features. One of the new features is added the svgr ...
随机推荐
- Java中volatile关键字解析
一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入.由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存 ...
- 一致性Hash算法的原理与实现(分布式映射算法)
一致性Hash算法解决的问题: 解决分布式系统中的负载均衡问题 背景问题:有N台服务器提供缓存服务,需要对服务器进行负载均衡,将请求平均发到每台服务器上,每台服务器负载1/N的服务 硬Hash映射:将 ...
- Docker镜像构建
一.简介 在构建容器化应用时,相当重要的步骤莫过于镜像制作,本文将介绍镜像制作方法以及镜像制作的建议.通常镜像的制作有两种方式: 使用现有的容器使用docker commit 生成镜像 使用Docke ...
- Linux iptables 命令
iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具.iptables 工具运行在用户态,主要是设置各种规则.而 netfilter 则运行在内核态,执行 ...
- Item 17: 理解特殊成员函数的生成规则
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 C++的官方说法中,特殊成员函数是C++愿意去主动生成的.C++9 ...
- IDEA安装Lombok插件失败的解决方案
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. Lombok简介 Lombok是Java语言的实用工具,确切的说,应 ...
- bootstrapValidator表单验证插件
bootstrapValidator——一个很好用的表单验证插件,再也不用手写验证规则啦! bootstrapValidator官方文档:http://bootstrapvalidator.votin ...
- poj2449 第k短路
题目链接 学习博客:https://blog.csdn.net/Z_Mendez/article/details/47057461 k短路没有我想象的那么难,还是很容易理解的 求s点到t点的第k短路径 ...
- Linux下安装redis的详细过程(redis版本为4.0.10)
1.安装redis步骤 1.推荐进入到linux路径/usr/local/src 2.$ wget http://download.redis.io/releases/redis-4.0.10.tar ...
- [2017BUAA软工助教]个人项目小结
2017BUAA个人项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7545780.html 二.评分细则 0.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...