關(guān)于babel-plugin-import的問(wèn)題

問(wèn)題:在ts環(huán)境中大猛,babel-plugin-import如何在webpack里面配置按需加載css的功能呢?
官方文檔給出兩種方法關(guān)于如何按需加載笤受。
1..babelrc里面添加配置(也可以再package.json里面加)

  1. babel-loader里面添加配置

第二種乳乌,我在社區(qū)找了很多案例也沒(méi)能解決我的問(wèn)題。正因?yàn)榄h(huán)境比較特殊截酷,我這里做了總結(jié):

  • 安裝babel-plugin-import插件
  • 在babel-loader里面添加該插件
 [require.resolve('babel-plugin-import'), {
    'libraryName': 'antd',
    libraryDirectory: 'lib',
    style: true
  }]

具體擺放位置:(里面的react-refresh是其他的babel插件)

module: {
      rules: [
        {
          test: /\.tsx?$/,
          loaders: [
            {
              loader: 'babel-loader',
              options: {
                plugins: [
                  isDev && require.resolve('react-refresh/babel'),
                  [require.resolve('babel-plugin-import'), {
                    'libraryName': 'antd',
                    libraryDirectory: 'lib',
                    style: true
                  }]
                ].filter(Boolean),
              }
            },     
            {
              loader: 'ts-loader'
            },
          ]
        },
    ]
}
  • 編輯tsconfig.ts
{
  "compilerOptions": {
    "target": "ES2019",                          /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
    "module": "es2020",                     /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
    "jsx": "react",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
    "strict": true,                           /* Enable all strict type-checking options. */
    "esModuleInterop": true,                  /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
    "skipLibCheck": true,                     /* Skip type checking of declaration files. */
    "forceConsistentCasingInFileNames": true,  /* Disallow inconsistently-cased references to the same file. */
    "moduleResolution": "node",           /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
  }
}

module: "es2020" 要改成es2020,意思就是要ts編譯后的文件的模塊化使用ES module,也就是import
moduleResolution: "node" 是ts按照node尋找包的方式去尋找模塊。
這兩句是能正常運(yùn)行的關(guān)鍵屹培,因?yàn)閎abel-plugin-import實(shí)際上就是尋找import然后在編譯過(guò)程替換成其他代碼
跟它的文檔所寫(xiě)一致。
如:

import { Button } from 'antd';
ReactDOM.render(<Button>xxxx</Button>);

      ↓ ↓ ↓ ↓ ↓ ↓

var _button = require('antd/lib/button');
require('antd/lib/button/style');
ReactDOM.render(<_button>xxxx</_button>);

所以在發(fā)生按需加載替換代碼之前怔檩,要保證代碼是以ES module的方式加載模塊的褪秀。因此ts才需要配置成ES module

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市薛训,隨后出現(xiàn)的幾起案子媒吗,更是在濱河造成了極大的恐慌,老刑警劉巖乙埃,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闸英,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡介袜,警方通過(guò)查閱死者的電腦和手機(jī)甫何,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)遇伞,“玉大人辙喂,你說(shuō)我怎么就攤上這事。” “怎么了巍耗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵秋麸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我芍锦,道長(zhǎng)竹勉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任娄琉,我火速辦了婚禮次乓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孽水。我一直安慰自己票腰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布女气。 她就那樣靜靜地躺著杏慰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炼鞠。 梳的紋絲不亂的頭發(fā)上缘滥,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音谒主,去河邊找鬼朝扼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛霎肯,可吹牛的內(nèi)容都是我干的擎颖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼观游,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼搂捧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起懂缕,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤允跑,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后搪柑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吮蛹,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年拌屏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潮针。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡倚喂,死狀恐怖每篷,靈堂內(nèi)的尸體忽然破棺而出瓣戚,到底是詐尸還是另有隱情,我是刑警寧澤焦读,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布子库,位于F島的核電站,受9級(jí)特大地震影響矗晃,放射性物質(zhì)發(fā)生泄漏仑嗅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一张症、第九天 我趴在偏房一處隱蔽的房頂上張望仓技。 院中可真熱鬧,春花似錦俗他、人聲如沸脖捻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)地沮。三九已至,卻和暖如春羡亩,著一層夾襖步出監(jiān)牢的瞬間摩疑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工畏铆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雷袋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓及志,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親寨腔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子速侈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354