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": ""
            }
        })
    );
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM