2020-08-26
create-react-app
与antd-mobile
构建项目,主题不符合,遂改变主题
准备工作:
create-react-app projrct-name
antd-mobile
: npm install antd-mobile --save
按需加载:
npm install react-app-rewired customize-cra babel-plugin-import --save-dev
config-overrides.js
, 该文件用来修改默认配置module.exports = function override(config, env) {
// do stuff with the webpack config...
return config;
};
package.json
, 原本由react-scripts
启动的脚本改为 react-app-rewired
, 如下"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-app-rewired eject",
"client": "serve build"
}
config-overrides.js
文件, 修改后文件如下const { override, fixBabelImports } = require(‘customize-cra‘);
module.exports = override(
fixBabelImports(‘import‘, {
libraryName: ‘antd-mobile‘,
style: true
})
);
import { Button } from ‘antd-mobile‘;
改变主题
npm install --save-dev babel-plugin-import less less-loader style-loader css-loader
webpack
配置,直接在config-overrides.js
文件修改,修改文件如下const { override, fixBabelImports, addLessLoader } = require(‘customize-cra‘);
module.exports = override(
addLessLoader({
javascriptEnabled: true,
modifyVars: {
‘@brand-primary‘: ‘#ff00ff‘,
‘@color-text-base‘: ‘#333‘,
}
}),
fixBabelImports(‘import‘, {
libraryName: ‘antd-mobile‘,
libraryDirectory: ‘es‘,
style: true
})
);
theme.json
文件,我放在项目根目录{
"@brand-primary": "#1cae82",
"@brand-primary-tap": "#1da57a"
}
config-overrides.js
const { override, fixBabelImports, addLessLoader } = require(‘customize-cra‘);
// ---------导入样式文件
const theme = require(‘./theme.json‘);
module.exports = override(
addLessLoader({
javascriptEnabled: true,
modifyVars: theme
}),
fixBabelImports(‘import‘, {
libraryName: ‘antd-mobile‘,
libraryDirectory: ‘es‘,
style: true
})
);
less-loader6.0+
报错了,哈哈哈哈哈,ValidationError: Invalid options object. Less Loader has been initialized using an options object that does not match the API schema.
这是因为less-loader6.0+
的兼容问题,两个解决办法
less-loader@6.0.0
并 install less-loader@5.0.0
config-overrides.js
文件const { override, fixBabelImports, addLessLoader } = require(‘customize-cra‘);
const theme = require(‘./antd-theme.json‘);
module.exports = override(
addLessLoader({
lessOptions: {
javascriptEnabled: true,
modifyVars: theme
}
}),
fixBabelImports(‘import‘, {
libraryName: ‘antd-mobile‘,
libraryDirectory: ‘es‘,
style: true
})
);
参考:
https://mobile.ant.design/docs/react/use-with-create-react-app-cn
原文:https://www.cnblogs.com/serahuli/p/13569980.html