亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解在create-react-app使用less與antd按需加載

2024-05-06 16:47:02
字體:
來源:轉載
供稿:網友

使用antd按需加載

使用react-app-rewired對 create-react-app 的默認配置進行自定義

1、yarn add react-app-rewired --dev

/* package.json */"scripts": {-  "start": "react-scripts start",+  "start": "react-app-rewired start",-  "build": "react-scripts build",+  "build": "react-app-rewired build",-  "test": "react-scripts test --env=jsdom",+  "test": "react-app-rewired test --env=jsdom",}

2.然后在項目根目錄創建一個 config-overrides.js 用于修改默認配置。

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

使用 babel-plugin-import

babel-plugin-import 是一個用于按需加載組件代碼和樣式babel 插件(原理),現在我們嘗試安裝它并修改config-overrides.js 文件

1.yarn add babel-plugin-import --dev

+ const { injectBabelPlugin } = require('react-app-rewired'); module.exports = function override(config, env) {+  config = injectBabelPlugin(['import', { libraryName: 'antd', libraryDirectory: 'es', style: 'css' }], config);  return config; };

或者也可修改

{      test: //.(js|jsx|mjs)$/,      include: paths.appSrc,      loader: require.resolve('babel-loader'),      options: {       plugins: [        ['import', { libraryName: 'antd', style: true }],       ],       // This is a feature of `babel-loader` for webpack (not Babel itself).       // It enables caching results in ./node_modules/.cache/babel-loader/       // directory for faster rebuilds.       cacheDirectory: true,      },     },

自定義主題

yarn add react-app-rewire-less --dev

 const { injectBabelPlugin } = require('react-app-rewired');+ const rewireLess = require('react-app-rewire-less'); module.exports = function override(config, env) {-  config = injectBabelPlugin(['import', { libraryName: 'antd', style: 'css' }], config);+  config = injectBabelPlugin(['import', { libraryName: 'antd', style: true }], config);+  config = rewireLess.withLoaderOptions({+   modifyVars: { "@primary-color": "#1DA57A" },+  })(config, env);  return config; };

參考鏈接:https://ant.design/docs/react/use-with-create-react-app-cn

使用less

如果已經配置react-app-rewire-less,則無需再進行此操作

1.npm install less-loader less --save-dev
2.修改node_modules/react_script/config下的webpack.config.dev.js 和 webpack.config-prod.js 配置文件

  • test: /.css$/ 改為 /.(css|less)$/
  • test: /.css$/ 的 use 數組配置增加 less-loader
{ test: //.(css|less)$/, use: [  require.resolve('style-loader'),  {   loader: require.resolve('css-loader'),   options: {    importLoaders: 1,   },  },  {   loader: require.resolve('postcss-loader'),   options: {    // Necessary for external CSS imports to work    // https://github.com/facebookincubator/create-react-app/issues/2677    ident: 'postcss',    plugins: () => [     require('postcss-flexbugs-fixes'),     autoprefixer({      browsers: [       '>1%',       'last 4 versions',       'Firefox ESR',       'not ie < 9', // React doesn't support IE8 anyway      ],      flexbox: 'no-2009',     }),    ],   },  },  {   loader: require.resolve('less-loader') // compiles Less to CSS  } ],},

使用css Module

antd 和 css modules 不能混用,針對antd的css 單獨寫一條loader的規則,不開啟 css modules。

使用 exclude 和 include 配置,修改webpack.config.dev.js 和 webpack.config-prod.js 配置文件 (盡量不要使用less-loader 來處理css文件,在與antd一起使用時可能出現錯誤,單獨寫一條規則)

    {      test: //.css$/,      exclude: /node_modules|antd/.css/,      use: [       require.resolve('style-loader'),       {        loader: require.resolve('css-loader'),        options: {         importLoaders: 1,         modules: true,  // 新增對css modules的支持         localIdentName: '[name]__[local]__[hash:base64:5]',        },       },       {        loader: require.resolve('postcss-loader'),        options: {         // Necessary for external CSS imports to work         // https://github.com/facebookincubator/create-react-app/issues/2677         ident: 'postcss',         plugins: () => [          require('postcss-flexbugs-fixes'),          autoprefixer({           browsers: [            '>1%',            'last 4 versions',            'Firefox ESR',            'not ie < 9', // React doesn't support IE8 anyway           ],           flexbox: 'no-2009',          }),         ],        },       },      ],     },     {      test: //.less$/,      exclude: /node_modules|antd/.less/,      use: [       require.resolve('style-loader'),       {        loader: require.resolve('css-loader'),        options: {         importLoaders: 1,         modules: true,  // 新增對css modules的支持         localIdentName: '[name]__[local]__[hash:base64:5]',        },       },       {        loader: require.resolve('postcss-loader'),        options: {         // Necessary for external CSS imports to work         // https://github.com/facebookincubator/create-react-app/issues/2677         ident: 'postcss',         plugins: () => [          require('postcss-flexbugs-fixes'),          autoprefixer({           browsers: [            '>1%',            'last 4 versions',            'Firefox ESR',            'not ie < 9', // React doesn't support IE8 anyway           ],           flexbox: 'no-2009',          }),         ],        },       },       {        loader: require.resolve('less-loader') // compiles Less to CSS       },      ],     },     {      test: //.(css)$/,      include: /node_modules|antd/.css/,      use: [       require.resolve('style-loader'),       {        loader: require.resolve('css-loader'),        options: {         importLoaders: 1,        },       },       {        loader: require.resolve('postcss-loader'),        options: {         // Necessary for external CSS imports to work         // https://github.com/facebookincubator/create-react-app/issues/2677         ident: 'postcss',         plugins: () => [          require('postcss-flexbugs-fixes'),          autoprefixer({           browsers: [            '>1%',            'last 4 versions',            'Firefox ESR',            'not ie < 9', // React doesn't support IE8 anyway           ],           flexbox: 'no-2009',          }),         ],        },       },      ],     },     {      test: //.(less)$/,      include: /node_modules|antd/.less/,      use: [       require.resolve('style-loader'),       {        loader: require.resolve('css-loader'),        options: {         importLoaders: 1,        },       },       {        loader: require.resolve('postcss-loader'),        options: {         // Necessary for external CSS imports to work         // https://github.com/facebookincubator/create-react-app/issues/2677         ident: 'postcss',         plugins: () => [          require('postcss-flexbugs-fixes'),          autoprefixer({           browsers: [            '>1%',            'last 4 versions',            'Firefox ESR',            'not ie < 9', // React doesn't support IE8 anyway           ],           flexbox: 'no-2009',          }),         ],        },       },       {        loader: require.resolve('less-loader') // compiles Less to CSS       },      ],     },

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩中文视频| 2019国产精品自在线拍国产不卡| 欧美做受高潮电影o| 国产精品久久999| 欧美激情2020午夜免费观看| 久久不射热爱视频精品| 国产精品自拍视频| 亚洲天堂免费观看| 日韩中文在线不卡| 欧美日韩中国免费专区在线看| 国产精品久久久久久久av电影| 国产狼人综合免费视频| 国产999精品久久久影片官网| 日韩欧美国产免费播放| 成人免费视频xnxx.com| 欧美激情乱人伦| 国产日韩精品在线观看| 欧美视频精品一区| 国产免费一区二区三区香蕉精| 午夜精品久久久久久久久久久久| 久久精品视频网站| 精品呦交小u女在线| 亚洲精品国产suv| 亚洲男人天堂2023| 91免费综合在线| 国产性色av一区二区| 欧美黄色片免费观看| 国产亚洲成av人片在线观看桃| 亚洲国产成人爱av在线播放| 国产91色在线| 一区二区中文字幕| 国产亚洲精品成人av久久ww| 国产欧美一区二区三区四区| 色噜噜狠狠狠综合曰曰曰88av| 欧美精品videosex性欧美| 欧美在线国产精品| 欧美日韩中文字幕在线| 超碰精品一区二区三区乱码| 欧美日韩国产一区中文午夜| 九九热视频这里只有精品| 一区国产精品视频| 91在线高清免费观看| 91精品综合久久久久久五月天| 日韩电影第一页| 欧美成人免费观看| 日韩欧美中文字幕在线观看| 国产精品久久久久久久美男| 777精品视频| 91福利视频网| 欧美视频中文字幕在线| 精品国产成人av| 亚洲电影天堂av| 久久久亚洲影院| 欧美精品久久久久a| 一区二区三区精品99久久| 欧美日韩国产精品一区二区不卡中文| 国产91色在线播放| 日本午夜人人精品| 欧美成人性生活| 国产精品亚洲美女av网站| 78m国产成人精品视频| 搡老女人一区二区三区视频tv| 国产精品成人一区二区| 这里只有精品在线观看| 欧美一级高清免费| 欧美激情一级精品国产| 欧美激情精品久久久| 一区二区三区四区在线观看视频| 国产精品video| 97久久久免费福利网址| 久久不射电影网| 国产一区二区三区在线视频| 欧美日韩一区二区免费视频| 中文字幕在线观看亚洲| 亚州欧美日韩中文视频| 亚洲无限av看| 成人免费视频网址| 国产在线日韩在线| 成人午夜一级二级三级| 欧美乱妇高清无乱码| 成人在线免费观看视视频| 久久精品国产久精国产思思| 亚洲成人黄色在线| 一区二区三区 在线观看视| 国产精品日韩在线| 亚洲欧美日韩天堂| 日本精品一区二区三区在线| 亚洲欧美变态国产另类| 国产精品日韩在线播放| 亚洲欧洲日产国码av系列天堂| 国产性猛交xxxx免费看久久| 97人洗澡人人免费公开视频碰碰碰| 国产区精品视频| 亚洲综合在线中文字幕| 成人免费视频在线观看超级碰| 黄色一区二区在线观看| 久久人91精品久久久久久不卡| 成人日韩在线电影| 久久久亚洲国产天美传媒修理工| 国产91亚洲精品| 精品欧美一区二区三区| 亚洲福利在线看| 性夜试看影院91社区| 国产精自产拍久久久久久蜜| 奇米成人av国产一区二区三区| 国产精品国语对白| 成人做爽爽免费视频| 亚洲石原莉奈一区二区在线观看| 成人免费激情视频| 亚洲视频在线看| 久久色精品视频| 羞羞色国产精品| 性欧美长视频免费观看不卡| 亚洲电影免费观看高清完整版在线| 成人做爽爽免费视频| 亚洲精品福利免费在线观看| 91免费的视频在线播放| 丝袜情趣国产精品| 欧美日韩亚洲网| 日韩欧美有码在线| 久久久99久久精品女同性| 日韩经典中文字幕在线观看| 精品人伦一区二区三区蜜桃网站| 亚洲专区在线视频| 日韩一级黄色av| 91精品国产综合久久香蕉最新版| 久久久久久久久久久网站| 欧美激情视频一区二区三区不卡| 日韩精品在线观看一区| 中文字幕日韩在线播放| 在线午夜精品自拍| 亚洲精品一区二区三区不| 国产在线视频一区| 欧美日韩爱爱视频| 欧美多人乱p欧美4p久久| 黄色一区二区在线观看| 国产精品黄色影片导航在线观看| 91精品国产综合久久香蕉的用户体验| 日韩精品视频在线观看免费| 在线看日韩av| 久久伊人精品一区二区三区| 日本aⅴ大伊香蕉精品视频| 日韩免费高清在线观看| 久久久综合免费视频| 亚洲精品国产suv| 国产美女直播视频一区| 欧美一区二区三区免费视| 91大神在线播放精品| 黑人与娇小精品av专区| 成人激情在线观看| 亚洲伊人成综合成人网| 久久精品国产清自在天天线| 精品国产91久久久| 欧美日韩午夜激情| 国产精品美乳一区二区免费| 国产精品夜色7777狼人| 亚洲欧洲高清在线| 国产日韩在线看| 91夜夜未满十八勿入爽爽影院| 免费91麻豆精品国产自产在线观看| 久久久久久亚洲精品中文字幕| 国产精品国产亚洲伊人久久| 国产一区二区三区在线观看网站| 永久免费精品影视网站|