我如何使用 .babelrc 让 babel-plugin-import 为 antd 工作?

How do I use .babelrc to get babel-plugin-import working for antd?

我是 React、babel 和 antd 的新手

我安装了 React 并使用 create-react-app 启动了一个项目。 我安装了 antd (ant.design)。它建议使用babel-plugin-import,所以我也安装了。

如果我解释正确,babel-plugin-import 的使用文档说将其放入 .babelrc 文件中:

{
  "plugins": [
    ["import", {
      "libraryName": "antd",
      "style": true
    }]
  ]
}

我无法让它正常工作。我的网络控制台仍然有警告:

You are using a whole package of antd, please use https://www.npmjs.com/package/babel-plugin-import to reduce app bundle size.

我的项目目录中没有 .babelrc 文件,所以我创建了一个包含上述内容的文件并重新启动了我的服务器 (npm start)。那没有用,所以我在 myProject/node_modules/babel_plugin_import 中创建了一个,但这也没有用。

该代码片段应该去哪里?

https://github.com/ant-design/babel-plugin-import 的底部写着

babel-plugin-import will be not working if you add the library in webpack config vender.

但是我不知道那是什么意思。

我在这里问了另一个问题: 也许这个问题与我通过create-react-app创建的项目有关??

[2018-02-06更新:答案还是正确的,但是现在有更好的选择,就是使用react-app-rewired。 link.]

中也记录了这一点

您需要按照 https://ant.design/docs/react/use-with-create-react-app#Import-on-demand 中的说明进行操作。

您应该创建 ant .babelrc 文件或类似文件。使用 CRA 时,所有 babel 配置都在 webpack 配置文件中处理。

首先清理您创建的配置文件,并确保您已安装 babel-plugin-import

然后弹出您的应用程序:npm run eject

这将为您提供一个 config 文件夹,其中包含用于 dev/prod 环境的 2 个 webpack 配置文件。

打开这些文件并找到您需要插入 plugins 属性 的位置,如说明页面上所述。

只需添加 babel-plugin-import 文档所说的内容,但请记住,如果您使用的是 CRA,则不能在不弹出项目的情况下直接更改 babel 配置。

如果不想弹出,可以使用@craco/craco,把babel配置放在里面,像这样:

/* craco.config.js */

module.exports = {
  babel: {
    presets: [],
    plugins: [
      [
        "import",
        {
          libraryName: "antd",
          style: true, // or 'css'
        },
      ],
    ],
    loaderOptions: {
      /* Any babel-loader configuration options: https://github.com/babel/babel-loader. */
    },
  },
};

不要忘记更改您的脚本(在 craco 文档中有更多详细信息):

/* package.json */

"scripts": {
-   "start": "react-scripts start",
+   "start": "craco start",
-   "build": "react-scripts build",
+   "build": "craco build"
-   "test": "react-scripts test",
+   "test": "craco test"
}