V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

那个啥 babel-plugin-import 到底要咋配置才能按需引入

  •  
  •   zxCoder · 2021-02-18 16:31:04 +08:00 · 1079 次点击
    这是一个创建于 1409 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我按文档这样做的

    1 create-react-app创建了一个项目,然后装了antdbabel-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'; 
    

    这东西到底怎么玩的,只是要这个简单的功能,网上查到的都很复杂,不知道怎么改

    13 条回复    2021-02-18 21:44:19 +08:00
    nnnToTnnn
        1
    nnnToTnnn  
       2021-02-18 16:37:20 +08:00
    eject
    nnnToTnnn
        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
    mdn
        3
    mdn  
       2021-02-18 16:41:05 +08:00
    //ant.design/docs/react/use-with-create-react-app-cn
    官方文档不是有介绍吗?
    zxCoder
        4
    zxCoder  
    OP
       2021-02-18 16:46:43 +08:00
    @nnnToTnnn
    @mdn

    文档看了呀 就是按文档说的做,上面写了

    ```
    按需加载#
    antd 默认支持基于 ES modules 的 tree shaking,对于 js 部分,直接引入 import { Button } from 'antd' 就会有按需加载的效果。

    如果你在开发环境的控制台看到下面的提示,那么你可能还在使用 [email protected] 或者 tree shaking 失效,请升级或检查相关配置。
    ```
    zxCoder
        5
    zxCoder  
    OP
       2021-02-18 16:48:42 +08:00
    @mdn 这个是全部引入吧
    murmur
        6
    murmur  
       2021-02-18 16:52:15 +08:00
    按需引入我记得是用注释,搜 babel dynamic import,至少是有一个 comment:true 的选项
    如果是 react 版本太老,有第三方组件实现按需引入
    murmur
        7
    murmur  
       2021-02-18 16:53:04 +08:00
    顺便,楼主说的是按需引用还是分模块打包,还是我理解难了
    zxCoder
        8
    zxCoder  
    OP
       2021-02-18 17:00:47 +08:00
    @murmur 我用的就是那个什么第三方插件 babel-plugin-import 吧 都是按官方文档弄的,就是跑不起来
    zxCoder
        9
    zxCoder  
    OP
       2021-02-18 17:01:45 +08:00
    @nnnToTnnn 你的意思是要 eject 之后 把配置写在 config 里面吗
    Sapp
        10
    Sapp  
       2021-02-18 17:31:41 +08:00
    我这么设置是成功的,我猜应该是你的 babel 根本没生效,是不是 create-react 有他自己的 babel 配置给你覆盖了?上面说的 eject 应该是对的
    zxCoder
        11
    zxCoder  
    OP
       2021-02-18 18:02:55 +08:00
    @Sapp 奇了怪了,换成 vue 的 antd,也是 import {Button} from 'ant-design-vue'; 结果没配置 babel 也能按需引入。。。f12 没警告。。。。太神奇了

    到底该不该配置这玩意 我还是搞不清楚
    triple7
        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
    zxCoder
        13
    zxCoder  
    OP
       2021-02-18 21:44:19 +08:00
    @triple7 原来如此。。。这么复杂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2599 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:04 · PVG 14:04 · LAX 22:04 · JFK 01:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.