• React 项目配置 npx create-react-app xxxx --template typescript


    customize-cra 修改webpack 基础配置

    安装

     npm install react-app-rewired customize-cra babel-plugin-import -D
    

    改写package.json 的启动命令

    原来的:

    "scripts": {
      "start": "react-scripts start",
       "build": "react-scripts build",
       "test": "react-scripts test",
       "eject": "react-scripts eject"
    
    }
    

    修改后的:

    "scripts": {
        "start": "env-cmd -e dev react-app-rewired start",
        "build:prod": "env-cmd -e prod react-app-rewired build",
        "build:qa": "react-app-rewired build",
        "test": "react-app-rewired test"
      },
    

    项目的根目录会多一个配置文件config-overrides.js (如果没有,手动新建)

    const {
        override,
        fixBabelImports,
        addLessLoader,
        addWebpackAlias
    } = require('customize-cra');
    const path = require('path');
    
    //webpack-plugin 插件修改
    const UglifyJsPlugin = require("uglifyjs-webpack-plugin")
    const myPlugin = [
        new UglifyJsPlugin({
            uglifyOptions: {
                warnings: false,
                compress: {
                    drop_debugger: true,
                    drop_console: true
                }
            }
        })
    ]
    
    module.exports = override(
        //按需加载
        fixBabelImports('import', {
            libraryName: 'antd',
            libraryDirectory: 'es',
            // style 的选项 ‘css' 表示引入的css文件   true 表示引入的less
            style: true,
        }),
        // 这里设置less
        addLessLoader({
            javascriptEnabled: true,
            modifyVars: {
                '@primary-color': '#d214a2',
                '@font-size-base': '12px',
            }
        }),
        //webpack 路径的解析
        addWebpackAlias({
            '@': path.resolve(__dirname, "src")
        }),
        //暴露webpack的配置 config 是webpack里面对应的config ,evn环境变量 
        (config, env) => {
            loaders[5].use.push({
                loader: 'sass-resources-loader',
                options: {
                    resources: path.resolve(__dirname, 'src/asset/base.scss') //全局引入公共的scss 文件
                }
            })
        }
    );
    

    env-cmd 环境变量配置

    安装

    yarn add env-cmd -D 
    

    根目录 新增 .env-cmdrc.json 文件

    {
        "dev": {
            "PORT": 5055,
            "REACT_APP_API_URL": "/manage",
            "REACT_APP_RETRY": 4,
            "REACT_APP_MD5_SUFFIX": "dmx.top.com.&dmX.%.X%m#d"
        },
        "prod": {
            "REACT_APP_API_URL": "http://admin.lhyzn.com",
            "REACT_APP_RETRY": 10,
            "REACT_APP_MD5_SUFFIX": "dmx.top.com.&dmX.%.X%m#d"
        }
    }
    
    

    http-proxy-middleware 网络请求跨域配置

    安装

    yarn add http-proxy-middleware 
    

    src目录下新建setupProxy.js

    /*
    * 代理 跨域
    * */
    
    const {createProxyMiddleware} = require('http-proxy-middleware');
    // app 这个app 代表的是服务器 是webpack-dev-server 底层用express实现的
    module.exports = function (app) {
        app.use(
            '/api',
            createProxyMiddleware({
                target: 'http://localhost:5055',
                changeOrigin: true,
                pathRewrite: {
                    "^/api": ""
                }
            })
        );
        app.use(
            '/manage',
            createProxyMiddleware({
                target: 'http://admin.lhyzn.com',
                changeOrigin: true,
                pathRewrite: {
                    "^/manage": ""
                }
            })
        );
    };
    
    
  • 相关阅读:
    #一点杂记
    《洛谷P3373 【模板】线段树 2》
    《Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020
    《牛客练习赛72C》
    《hdu2819》
    《hdu2818》
    《Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)》
    《51nod1237 最大公约数之和 V3》
    对输入的单词进行排序
    快速排序
  • 原文地址:https://www.cnblogs.com/boyGdm/p/14133675.html
Copyright © 2020-2023  润新知