我按文档这样做的
1 create-react-app
创建了一个项目,然后装了antd
和babel-plugin-import
,然后按文档说的,配置了.babelrc
,内容是:
{
"plugins": [
[
"import",
{
"libraryName": "antd",
"style": "css"
}
]
]
}
然后还是不能按需加载,控制台仍然显示
index.js:8 You are using a whole package of antd, please use https://www.npmjs.com/package/babel-plugin-import to reduce app bundle size.
package.json 内容如下:
{
"name": "mongodb-pbac-client-react",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.9",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^12.7.1",
"antd": "^4.12.3",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-scripts": "4.0.2",
"web-vitals": "^1.1.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"babel-plugin-import": "^1.13.3"
}
}
只有一个组件,里面引入部分是这样的:
import { Button } from 'antd'; // 只引入这个,有按钮,没有样式,而且 console 显示没有按需加载
// import 'antd/dist/antd.css'; // 引入所有样式
// import Button from 'antd/lib/button';
// import 'antd/lib/button/style/css';
这东西到底怎么玩的,只是要这个简单的功能,网上查到的都很复杂,不知道怎么改
1
nnnToTnnn 2021-02-18 16:37:20 +08:00
eject
|
2
nnnToTnnn 2021-02-18 16:39:46 +08:00
see https://github.com/facebook/create-react-app#philosophy
https://ant.design/docs/react/getting-started-cn#%E6%8C%89%E9%9C%80%E5%8A%A0%E8%BD%BD |
3
mdn 2021-02-18 16:41:05 +08:00
//ant.design/docs/react/use-with-create-react-app-cn
官方文档不是有介绍吗? |
4
zxCoder OP @nnnToTnnn
@mdn 文档看了呀 就是按文档说的做,上面写了 ``` 按需加载# antd 默认支持基于 ES modules 的 tree shaking,对于 js 部分,直接引入 import { Button } from 'antd' 就会有按需加载的效果。 如果你在开发环境的控制台看到下面的提示,那么你可能还在使用 [email protected] 或者 tree shaking 失效,请升级或检查相关配置。 ``` |
6
murmur 2021-02-18 16:52:15 +08:00
按需引入我记得是用注释,搜 babel dynamic import,至少是有一个 comment:true 的选项
如果是 react 版本太老,有第三方组件实现按需引入 |
7
murmur 2021-02-18 16:53:04 +08:00
顺便,楼主说的是按需引用还是分模块打包,还是我理解难了
|
8
zxCoder OP @murmur 我用的就是那个什么第三方插件 babel-plugin-import 吧 都是按官方文档弄的,就是跑不起来
|
10
Sapp 2021-02-18 17:31:41 +08:00
我这么设置是成功的,我猜应该是你的 babel 根本没生效,是不是 create-react 有他自己的 babel 配置给你覆盖了?上面说的 eject 应该是对的
|
11
zxCoder OP @Sapp 奇了怪了,换成 vue 的 antd,也是 import {Button} from 'ant-design-vue'; 结果没配置 babel 也能按需引入。。。f12 没警告。。。。太神奇了
到底该不该配置这玩意 我还是搞不清楚 |
12
triple7 2021-02-18 18:13:59 +08:00
cra 不支持你直接配置 babelrc,所以你的配置没有生效,你需要 eject 暴露出来直接修改 webpack 。
或者可以使用 react-app-rewired 和 customize-cra 自定义 webpack 配置。 可以参考我之前的文章: https://zhuanlan.zhihu.com/p/96103181 |