create-react-app的自定义配置

create-react-app作为最常用的react脚手架集成了很多的常用功能,比如支持es6JSX动态importFetch(polyfill)proxypostcsseslint等。但也有些功能并没有提供支持比如Hot-reloadingcss预处理器,所以我们需要自定义配置这些功能。

首先需要npm run eject进行自定义配置。

配置proxy

在package.json中添加proxy字段

create-react-app的自定义配置_第1张图片

index.js中实现代理功能
create-react-app的自定义配置_第2张图片

npm start打开控制台请求数据成功
create-react-app的自定义配置_第3张图片

配置css预处理less/sass

首先安装对应的loader
yarn add less-loader less --dev
yarn add sass-loader node-sass --dev
修改dev环境的配置

create-react-app的自定义配置_第4张图片

create-react-app的自定义配置_第5张图片

然后修改生成环境下的配置,修改方法同上,sass的配置同理。
create-react-app的自定义配置_第6张图片

配置模块热更新

模块热更新通俗的说就是不刷新页面更新的模块自己更新。
首先 yarn add react-hot-loader --dev,然后再webpack.config.dev.js中添加

create-react-app的自定义配置_第7张图片

在babel-loader中添加一个plugins。


create-react-app的自定义配置_第8张图片

修改入口文件代码如下

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';

import { AppContainer } from 'react-hot-loader';

// ReactDOM.render(, document.getElementById('root'));

const render = Component => {
    ReactDOM.render(
        
            
        ,
        document.getElementById('root')
    )
}

render(App);

if(module.hot) {
    module.hot.accept('./App',() => {
        render(App);
    });
}

registerServiceWorker();

//之前实验proxy代理的代码
fetch('/api/comments/show?id=4199740256395164&page=1')
    .then(res => {
        res.json().then(data => {
            console.log(data)
        })
    })

这样就完成了热更新的配置。

你可能感兴趣的:(create-react-app的自定义配置)