【问题标题】:Use Laravel Mix with React, TypeScript and Ant Design将 Laravel Mix 与 React、TypeScript 和 Ant Design 结合使用
【发布时间】:2020-07-06 11:53:49
【问题描述】:

我在配置 laravel-mix 以使其与 React、Typescript、Ant Design 一起正常工作时遇到问题。 我从没有 TypeScript 的 JS 开始使用 React,它工作得很好(Ant Design 样式是通过覆盖变量导入的)。

但添加 Typescript 后,导入 Ant Design 样式停止工作。为了让它工作,我需要手动将 antd 样式文件导入到我的主样式 .scss 文件中。但在这种情况下,bundle 会变得很大,并且变量覆盖不起作用。

webpack.mix.js:

const mix = require('laravel-mix');
const AntdScssThemePlugin = require('antd-scss-theme-plugin');

mix.webpackConfig({
    module: {
        rules: [
            {
                test: /\.less$/,
                use: [
                    AntdScssThemePlugin.themify({
                        loader: "less-loader",
                        options: {
                            javascriptEnabled: true
                        }
                    })
                ],
            },
            {
                test: /\.tsx?$/,
                loader: "ts-loader",
                exclude: /node_modules/,
                options: {
                transpileOnly: true
                }
            }           
        ]
    },
    resolve: {
      extensions: ["*", ".js", ".jsx", ".vue", ".ts", ".tsx", ".less", ".scss", ".css"]
    },
    plugins: [
        new AntdScssThemePlugin('./resources/sass/_theme.scss') // theme customization
    ]
});

mix.setPublicPath('../public_html')
    .react('resources/js/app.js', '../public_html/js')
    .sass('resources/sass/app.scss', '../public_html/css')
    .extract(['react', 'react-dom', 'react-router-dom', 'react-redux', 'redux', 'redux-thunk', 'axios'])
    .sourceMaps(!mix.inProduction(), 'source-map')
    .version();

.babelrc:

{
    "presets": [
        [
            "@babel/preset-env", {
                "targets": {
                    "browsers": [ ">5%", "not op_mini all"]
                }
            }
        ], 
        "@babel/preset-react"
    ],
    "plugins": [
        "@babel/plugin-proposal-class-properties",
        ["import", {
            "libraryName": "antd",
            "libraryDirectory": "es",
            "style": true
        }]
    ]
}

Ant Design documentation 描述了使用 create-react-app 的用例,但我需要让它与 laravel-mix 一起使用。

也许有人遇到过类似的问题。

【问题讨论】:

    标签: reactjs typescript antd laravel-mix


    【解决方案1】:

    我在 larvel 8 中为自定义颜色配置了 ant design

    我配置的版本

    "less": "^4.1.1",
    "less-loader": "^10.0.1",
    "antd": "^4.16.11",
    

    我遵循的步骤

    • 使用npm i --s antd安装antd
    • 使用npm i --s less less-loader减少安装
    • 如下更改您的 webpack.mix.js 文件

    mix
      .js("resources/js/app.js", "public/js")
      .react()
      .sass("resources/sass/app.scss", "public/css")
      .less("resources/less/app.less", "public/css", {
        lessOptions: {
          javascriptEnabled: true,
          modifyVars: {
            "primary-color": "#0BD37E",
          },
        },
      });

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 1970-01-01
      • 2020-06-01
      • 2017-10-21
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 2021-07-01
      • 2019-10-22
      相关资源
      最近更新 更多