react+typescript+antd 項(xiàng)目實(shí)戰(zhàn)(1)

前言

本文主要記錄在開發(fā)react+typescript+antd項(xiàng)目過程中遇到的問題,踩過的坑,希望對(duì)看到的同學(xué)有一些幫助。由于是第一次使用react做項(xiàng)目捌木,有些理解錯(cuò)誤和描述不對(duì)的地方,希望大家能夠指出嫉戚。同時(shí)這也是我第一次寫這種博客性質(zhì)的東西钮莲,不當(dāng)?shù)牡胤揭舱埓蠹腋嬖V我,萬分感謝彼水。

環(huán)境搭建

使用 create-react-app 一步步地創(chuàng)建一個(gè) TypeScript 項(xiàng)目,并引入 antd极舔。
參照antd官方文檔

1凤覆、創(chuàng)建項(xiàng)目

create-react-app react-typescript-antd-demo --scripts-version=react-scripts-ts
進(jìn)入項(xiàng)目并啟動(dòng),默認(rèn)端口是3000
cd react-typescript-antd-demo
yarn start
此時(shí)瀏覽器會(huì)訪問 http://localhost:3000/ 拆魏,看到以下界面就算成功了盯桦。

image

2、引入antd

yarn add antd

3渤刃、高級(jí)配置

使用react-app-rewired(一個(gè)對(duì) create-react-app 進(jìn)行自定義配置的社區(qū)解決方案)
yarn add react-app-rewired@1.6.2 --dev
注:react-app-rewired@2.0.1的版本獲取react-scripts-ts配置路徑報(bào)錯(cuò)
修改 package.json 里的啟動(dòng)配置

  "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",
    "eject": "react-scripts-ts eject"
  },

然后在項(xiàng)目根目錄創(chuàng)建一個(gè) config-overrides.js 用于修改默認(rèn)配置拥峦。

module.exports = function override(config, env) {
  // do stuff with the webpack config...
  return config;
};

使用 ts-import-plugin(一個(gè)用于按需加載組件代碼和樣式的 TypeScript 插件)
yarn add ts-import-plugin --dev
修改 config-overrides.js 文件

/* config-overrides.js */
const tsImportPluginFactory = require('ts-import-plugin')
const { getLoader } = require("react-app-rewired");

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: 'css',
      }) ]
    })
  };

  return config;
}

使用 react-app-rewire-less 自定義主題
yarn add react-app-rewire-less --dev
修改 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;
};

運(yùn)行 yarn eject 命令將所有內(nèi)建的配置暴露出來(不可逆,謹(jǐn)慎操作)
注:運(yùn)行yarn eject只有可能會(huì)出現(xiàn)依賴包丟失的情況卖子,我遇到的是react-scripts-ts丟失略号,需要根據(jù)具體報(bào)錯(cuò)信息解決

項(xiàng)目地址:https://github.com/kaichen87/react-typescript-antd-demo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子玄柠,更是在濱河造成了極大的恐慌突梦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽利,死亡現(xiàn)場離奇詭異宫患,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)这弧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門娃闲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人匾浪,你說我怎么就攤上這事皇帮。” “怎么了户矢?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵玲献,是天一觀的道長。 經(jīng)常有香客問我梯浪,道長捌年,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任挂洛,我火速辦了婚禮礼预,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虏劲。我一直安慰自己托酸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布柒巫。 她就那樣靜靜地躺著励堡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堡掏。 梳的紋絲不亂的頭發(fā)上应结,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音泉唁,去河邊找鬼鹅龄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亭畜,可吹牛的內(nèi)容都是我干的扮休。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拴鸵,長吁一口氣:“原來是場噩夢啊……” “哼玷坠!你這毒婦竟也來了蜗搔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤侨糟,失蹤者是張志新(化名)和其女友劉穎碍扔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秕重,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡不同,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溶耘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片二拐。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凳兵,靈堂內(nèi)的尸體忽然破棺而出百新,到底是詐尸還是另有隱情,我是刑警寧澤庐扫,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布饭望,位于F島的核電站,受9級(jí)特大地震影響形庭,放射性物質(zhì)發(fā)生泄漏铅辞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一萨醒、第九天 我趴在偏房一處隱蔽的房頂上張望斟珊。 院中可真熱鬧,春花似錦富纸、人聲如沸囤踩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堵漱。三九已至,卻和暖如春涣仿,著一層夾襖步出監(jiān)牢的瞬間勤庐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工变过, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涝涤。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓媚狰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阔拳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子崭孤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容