前面的话

  使用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的再配置的更多相关文章

  1. 如何扩展 Create React App 的 Webpack 配置

    如何扩展 Create React App 的 Webpack 配置  原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...

  2. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  3. tap news:week5 0.0 create react app

    参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...

  4. 在 .NET Core 5 中集成 Create React app

    翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...

  5. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  6. Create React App

    Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...

  7. Create React App 安装less 报错

    执行npm run eject 暴露模块 安装 npm i  less less-loader -D 1.打开 react app 的 webpack.config.js const sassRege ...

  8. create react app的 css loader 进行局部配置

    { test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, sourceMap: isEnv ...

  9. [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 ...

  10. [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  ...

随机推荐

  1. JSONPath介绍

    1. JSONPath介绍 官网地址: https://github.com/alibaba/fastjson/wiki/JSONPath fastjson 1.2.0之后的版本支持JSONPath. ...

  2. 【Windows】+ windows下在某一文件夹下按“shift+鼠标右键”打开CMD窗口

    前言:没更改之前是打开的powershell窗口,超不习惯 新建一个txt文件,然后复制以下代码,然后保存为OpenCmdHere.reg 格式,然后双击即可 Windows Registry Edi ...

  3. java对象比较

    public class InternDemo { public static void main(String[] args){ /* jdk7版本之后 字符串常量池从Perm Space移到Jav ...

  4. web 项目:解决插入 MySQL 数据库时中文乱码问题

    背景:在做 javaweb 项目的时,前台传递的中文最后插入数据库的时候总是出现乱码现象. 解决方案 ​ A.不管是使用 Idea.eclipse,确定自己的项目所使用的字符集是 UTF-8. ​ B ...

  5. [书籍]重温《Framework Design Guidelines》

    1. 前言 最近重温了<Framework Design Guidelines>. <Framework Design Guidelines>中文名称为<.NET设计规范 ...

  6. mockjs使用

    /** * 使用mockjs来mock数据, 提供mock数据API接口 */ import Mock from 'mockjs' import data from './data.json' //注 ...

  7. Python学习第十四篇——类初步使用及面向对象思想

    class Restaurant(): def __init__(self,restaurant_name,cuisine_type): self.name = restaurant_name sel ...

  8. Codeforces Round #481 (Div. 3)Petya's Exams CodeForces - 978G

    Petya studies at university. The current academic year finishes with nn special days. Petya needs to ...

  9. Largest Rectangle in a Histogram HDU - 1506 (单调栈)

    A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec ...

  10. PEP 8 python编程规范

    一 代码编排 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格. 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车. 类和to ...