我用命令创建了新的React Ant Design项目 ,
$ create-react-app my-project --scripts-version=react-scripts-ts-antd
跟随official Ant Design documentation
现在,我想在我的项目中添加对较少模块的支持,而无需弹出。我尝试关注多篇有关修改config-overrides.js
文件的文章,但均未成功。任何人都可以正常工作并且可以共享配置吗?
答案 0 :(得分:0)
经过多次尝试/失败后,我发现了这个问题,如果其他人感兴趣,请发布答案。
$ yarn add react-app-rewire-less-modules@1.1.0 -D
config-overrides.js
添加 ts-import-plugin 的配置,以便按需导入组件,自定义主题和 LESS模块 < / li>
// config-overrides.js
const tsImportPluginFactory = require('ts-import-plugin');
const { getLoader } = require('react-app-rewired');
const rewireLessModules = require('react-app-rewire-less-modules');
module.exports = function override(config, env) {
const tsLoader = getLoader(
config.module.rules,
rule =>
rule.loader &&
typeof rule.loader === 'string' &&
rule.loader.includes('ts-loader')
);
tsLoader.options = {
getCustomTransformers: () => ({
before: [ tsImportPluginFactory({
libraryDirectory: 'es',
libraryName: 'antd',
style: true
}) ]
})
};
config = rewireLessModules.withLoaderOptions(
`${env === 'production' ? 'wmf' : '[path][name]__[local]-'}-[hash:base64:8]`, {
javascriptEnabled: true,
modifyVars: { '@primary-color': '#1DA57A' }
})(config, env);
return config;
};
.css
,在新文件.less
中将style-modules.d.ts
和import
声明为Typescript模块
// style-modules.d.ts
declare module '*.css';
declare module '*.less';
App.module.less
.red {
color: red;
}
App.tsx
import { Button } from 'antd';
import * as React from 'react';
import './App.css';
import styles from './App.module.less';
class App extends React.Component {
public render() {
return (
<div className="App">
<Button type="primary">Button</Button>
<p className={styles.red}>
LESS Modules
</p>
</div>
);
}
}
export default App;