React-create-app不eject配置項目

React-create-app without ejectjavascript

📙 項目參考: 文章中用到的配置可參考 https://github.com/zlinggnilz/react-multi-level-formcss

📘 具體操做以下 :java

▲ 安裝 create-react-appreact

npm install -g create-react-app

▲ 使用 create-react-app 建立項目git

使用 npm 命令:github

npm init react-app my-app

或使用 yarn 命令npm

yarn create react-app my-app

▲ 安裝 react-app-rewired 和 customize-cra, 用於自定義配置json

cd my-app
npm install react-app-rewired customize-cra --save-dev

▲ package.json中修改 start, build, test 配置api

"scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "test": "react-app-rewired test"
}

▲ 安裝 Ant-Design跨域

npm install antd --save

▲ 安裝less loader

npm install less less-loader --save-dev

▲ 安裝 babel-plugin-import 用於按需加載組件代碼和樣式

npm install babel-plugin-import --save-dev

▲ 項目根目錄添加 config-overrides.js 文件,用於修改默認配置

目前用到的配置大體以下:使用裝飾器, 別名, 按需引入, less-loader配置

(說明:  *.less 不使用css module ,  *.module.less 使用css module)

const { override, fixBabelImports, addDecoratorsLegacy, addLessLoader, addWebpackAlias } = require('customize-cra');

const path = require('path');

module.exports = override(
  addDecoratorsLegacy(),
  addWebpackAlias({
    '@': path.resolve(__dirname, 'src/'),
  }),
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: true,
  }),
  addLessLoader({
    javascriptEnabled: true,
    // modifyVars: { '@primary-color': '#25b864' }, // 修改antd theme
    localIdentName: '[path][name]-[local]',
  })
);

▲ 本地開發跨域添加Proxy,安裝 http-proxy-middleware

npm install http-proxy-middleware --save-dev

▲ 添加 src/setupProxy.js 文件, 不須要另外引入到項目

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(proxy('/api', { target: 'http://localhost:5000/' }));
};

▲ 安裝 hot loader, 用於熱更新

npm install react-hot-loader --save 
npm install react-app-rewire-hot-loader --save 

▲ 修改 config-overrides.js 文件, 加入hot loader配置

const { override, fixBabelImports, addDecoratorsLegacy, addLessLoader, addWebpackAlias } = require('customize-cra');
const rewireReactHotLoader = require('react-app-rewire-hot-loader');

const path = require('path');

module.exports = override(
  addDecoratorsLegacy(),
  addWebpackAlias({
    '@': path.resolve(__dirname, 'src/'),
  }),
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: true,
  }),
  addLessLoader({
    javascriptEnabled: true,
    // modifyVars: { '@primary-color': '#25b864' }, // 修改antd theme
    localIdentName: '[path][name]-[local]',
  }),
  (config, env) => {
    config = rewireReactHotLoader(config, env);
    return config;
  }
);

▲ 修改App.js文件

加入:

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

export defalt App 改成:

export default (process.env.NODE_ENV === 'development' ? hot(module)(App) : App);

▲ 若是build不須要sourcemap,修改package中scripts裏的build 

"build": "GENERATE_SOURCEMAP=false react-app-rewired build"

▲ 正常啓動項目便可

npm start

 

📚 文檔參考 :

相關文章
相關標籤/搜索