码迷,mamicode.com
首页 > 移动开发 > 详细

在create-react-app脚手架上实现Ant Design按需加载

时间:2020-03-03 22:15:54      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:env   cache   spl   实现   ade   rar   eid   ant   -keep   

首先安装babel-plugin-import:

npm i babel-plugin-import -S
技术图片

然后在.babelrc中添加如下代码:

// .babelrc or babel-loader option
{
  "plugins": [
    ["import", { libraryName: "antd", style: "css" }] // `style: true` 会加载 less 文件
  ]
}
技术图片

但如果是用的create-react-app脚手架的话,初始的根目录里并没有.babelrc文件,那就自己新建一个。

babelrc配置完之后,把项目跑起来发现并不起作用,组件样式并没有加上。

这里其实错的不是我们,也不是antd,而是这个脚手架它默认是不使用.babelrc的,可以在

node_modules/react-scripts/config/webpack.config.js中看到babelrc: false

{
              test: /\.(js|mjs|jsx|ts|tsx)$/,
              include: paths.appSrc,
              loader: require.resolve(‘babel-loader‘),
              options: {
                customize: require.resolve(
                  ‘babel-preset-react-app/webpack-overrides‘
                ),
                // @remove-on-eject-begin
                babelrc: false,
                configFile: false,
                presets: [require.resolve(‘babel-preset-react-app‘)],
                // Make sure we have a unique cache identifier, erring on the
                // side of caution.
                // We remove this when the user ejects because the default
                // is sane and uses Babel options. Instead of options, we use
                // the react-scripts and babel-preset-react-app versions.
                cacheIdentifier: getCacheIdentifier(
                  isEnvProduction
                    ? ‘production‘
                    : isEnvDevelopment && ‘development‘,
                  [
                    ‘babel-plugin-named-asset-import‘,
                    ‘babel-preset-react-app‘,
                    ‘react-dev-utils‘,
                    ‘react-scripts‘,
                  ]
                ),
                // @remove-on-eject-end
                plugins: [
                  [
                    require.resolve(‘babel-plugin-named-asset-import‘),
                    {
                      loaderMap: {
                        svg: {
                          ReactComponent:
                            ‘@svgr/webpack?-svgo,+titleProp,+ref![path]‘,
                        },
                      },
                    },
                  ],
                ],
                // 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,
                // See #6846 for context on why cacheCompression is disabled
                cacheCompression: false,
                compact: isEnvProduction,
              },
            }
技术图片

只要把false改成true再重新“npm run start”一下就好了。

后面用的antd组件的地方直接引用就行了,不用再去引样式。

import { Button } from ‘antd‘;
技术图片

在create-react-app脚手架上实现Ant Design按需加载

标签:env   cache   spl   实现   ade   rar   eid   ant   -keep   

原文地址:https://www.cnblogs.com/samve/p/12404901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!