【发布时间】: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