react+typescript 中引入antd踩坑

創(chuàng)建 react+typescript 項目

## 安裝腳手架
npm install create-react-app -g
## 創(chuàng)建項目名為my-project的項目
create-react-app my-project --scripts-version=react-scripts-ts

## 啟動項目
cd my-project
yarn start

查看是否運行: localhost:3000

加入 antd 引用

yarn add antd
## 注意: 這里暫時不要安裝react-app-rewired 2.0版本的, 后續(xù)命令行會出錯 這里安裝的是1.6.2版本的
yarn add ts-import-plugin react-app-rewired@1.6.2 react-app-rewire-less --dev

配置修改

  1. 在根目錄下添加 config-overrides.js 文件

    const tsImportPluginFactory = require('ts-import-plugin');
    const { getLoader } = require('react-app-rewired');
    const rewireLess = require('react-app-rewire-less');
    
    module.exports = function override(config, env) {
      const tsLoader = getLoader(
        config.module.rules,
        rule => rule.loader && typeof rule.loader === 'string' && rule.loader.includes('ts-loader')
      );
    
      tsLoader.options = {
        getCustomTransformers: () => ({
          before: [
            tsImportPluginFactory({
              libraryDirectory: 'es',
              libraryName: 'antd',
              style: true,
            }),
          ],
        }),
      };
    
      config = rewireLess.withLoaderOptions({
        javascriptEnabled: true,
        modifyVars: {
          '@primary-color': '#1DA57A', // 主題色
        },
      })(config, env);
    
      return config;
    };
    
  2. 修改 package.json 中的 script 任務項

     "scripts": {
       "start": "react-app-rewired start --scripts-version react-scripts-ts",
       "build": "react-app-rewired build --scripts-version react-scripts-ts",
       "test": "react-app-rewired test --env=jsdom --scripts-version react-scripts-ts"
    },
    
  3. 接下來可以使用 antd 了

    import * as React from 'react';
    import { Button } from 'antd';
    
    class App extends React.Component {
      public render() {
        return (
          <div className="App">
            <header className="App-header">
              <img src={logo} className="App-logo" alt="logo" />
              <h1 className="App-title">Welcome to React</h1>
            </header>
            <p className="App-intro">
              <Button type="primary">Button</Button>
            </p>
          </div>
        );
      }
    }
    

項目地址: https://github.com/VonConfidence/react-typescript-antd

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容