初始化后的react项目目录结构如下图所示:然后执行npm start即可启动项目。antd是一个非常好用的框架,有时我们可能会需要在使用create-react-app创建的项目中使用它,但是如果把antd全局引入了的话,打包后的体积会特别大,所以比较好的方式是按需引入项目中需要使用的组件。如何实现按需引入呢?下面我介绍两种方式,其中一种是antd官方提供的方法,另一种则是执行npm run eject后在webpack配置文件中配置按需引入。
使用create-react-app创建好项目后,我们需要先执行npm run eject以让webpack的配置文件显示出来,这个过程是不可逆的,执行这个命令后,在项目的根目录下面会多一个config文件夹,里面存放的是webpack相关的配置文件:接下来需要对webpack.config.dev.js和webpack.config.prod.js两个文件做相同的修改:一个是babel-loader中的plugins增加对atnd的支持:
// Process application JS with Babel. // The preset includes JSX, Flow, and some ESnext features. { test: /\.(js|mjs|jsx|ts|tsx)$/, include: paths.appSrc, loader: require.resolve('babel-loader'), options: { customize: require.resolve( 'babel-preset-react-app/webpack-overrides' ),
plugins: [ [ require.resolve('babel-plugin-named-asset-import'), { loaderMap: { svg: { ReactComponent: '@svgr/webpack?-prettier,-svgo![path]', }, }, }, ], ['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, // Don't waste time on Gzipping the cache cacheCompression: false, }, },